어떠한 협동적 프로젝트든 견고하게 오래 지속되기 위해서는 일관성과 안정성이 필요합니다.
여기에서 제공되는 지침은 무들 코드가 추구하는 목적을 달성하기위해 제시하는 것들입니다. 사실 어떤 영역에 있는 기존의 오래된 코드들은 구닥다리지만, 결국 새롭게 수정되어 다시 태어날 것입니다. 모든 새로운 코드들은 가능한한 이러한 표준에 가까와져 궁극적으로는 하나로 융합될 것입니다.
만일 도움말 파일을 갱신할 필요가 있다면 다음 사항에 유의하라.
만일 여러분이 다른 것에 익숙하다면, 여러분의 스타일을 바꾼다는 것이 다소 성가신 일이 될 것이라는 것을 알고 있지만, 무들을 개발하는 서로 다른많은 사람이 나중에 서로 다른 스타일 때문에 격을 성가심을 생각해 본다면 뭔가 균형을 잡아야 할 필요가 있을 것이다. 사실 명백히 사람들이 쓰고 있는 좋고 나쁜 스타일들이 있지만, 현재의 무들 코딩 스타일은 존재하고 있으며, 즐겨 이를 엄수할 필요가 있다.
좋음: $quiz
좋음: $errorstring
좋음: $assignments (일련의 대상의 나열)
좋음: $i (단순한 반복의 경우만)
나쁨: $Quiz
나쁨: $aReallyLongVariableNameWithoutAGoodReason
나쁨: $error_string
define("FORUM_MODE_FLATOLDEST", 1);
function forum_set_display_mode($mode=0)
{
global $USER,
$CFG;
if ($mode)
{
$USER->mode
= $mode;
} else if (empty($USER->mode))
{
$USER->mode
= $CFG->forum_displaymode;
}
}
if ($quiz->attempts)
{
if ($numattempts >
$quiz->attempts)
{
error($strtoomanyattempts,
"view.php?id=$cm->id");
}
}
$var = 'some text without any
variables';
$var = "with special characters like a new line \n";
$var = 'a very, very long string with a '.$single.' variable in it';
$var = "some $text with $many variables $within it";
/**
* The description should be first, with asterisks laid out exactly
* like this example. If you want to refer to a another function,
* do it like this: {@link clean_param()}. Then, add descriptions
* for each parameter as follows.
*
* @param int $postid The PHP type is followed by the variable name
* @param array $scale The PHP type is followed by the variable name
* @param array $ratings The PHP type is followed by the variable name
* @return mixed
*/
function forum_get_ratings_mean($postid,
$scale, $ratings=NULL)
{
if (!$ratings)
{
$ratings
= array(); //
Initialize the empty array
if ($rates
= get_records("forum_ratings",
"post", $postid))
{
//
Process each rating in turn
foreach
($rates as $rate)
{
....etc
foreach ($objects
as $key =>
$thing) {
process($thing);
}
if ($x ==
$y)
{
$a
= $b;
} else if ($x ==
$z) {
$a
= $c;
} else {
$a
= $d;
}
$a = array()
혹은 $obj = new stdClass();
.optional_variable()
함수를 쓰지 말고 대신 optional_param()
를 써라. 바라는 데이터 유형에 알맞는 PARAM_XXXX 값을 골라라. 변수에 적합한 임의 값을 설정하고 이를 점검하기 위해 set_default()
함수를 이용하라.require_variable()
함수를 사용하지 말고 대신 required_param()
함수를 이용하라. 바라는 데이터 유형에 알맞는 PARAM_XXXX 값을 선택하라.data_submitted()
를 사용하라. 데이터는 사용하기 전에 반드시 오류를 제거해야 한다.$_GET
, $_POST
또는 $_REQUEST
는 사용하지 말아라. 여러분의 필요에 따라 적절한 required_param()
혹은 optional_param()
를 사용하라.if (isset($_GET['something']))
과 같이 쓰지 마라. 대신 $something = optional_param( 'something',-1,PARAM_INT )
을 입력하고 if ($something>=0) {...
처럼 써서 원하는 결과가 나오는지를 점검하라.required_param()
, optional_param()
그리고 변수의 초기값들은 각 파일의 처음에 모아 두어야 한다.<input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>" />
을 포함시키고, 폼의 작동 점검을 할 때는 if (!confirm_sesskey()) {error('Bad Session Key');}
를 쓴다.clean_filename()
함수를 써서 '깨끗이' 만들어야 하며, required_param()
혹은 optional_param()
를 적절하게 쓰지 않았다면 이를 통과하지 못할 것이다.addslashes()
를 통과해야 한다. 모든 데이터 객체는 한 번씩 addslashes_object()
를 거쳐야 한다.POST
데이터로 입력되어야 하며(method="POST"
의 형태로), 반대의 경우는 GET
데이터로 URL 로부터 입력받아야 한다.$_SERVER
로 부터 데이터를 사용하지 말아라. 이는 이식성 문제(portability issues)를 가지고 있다.clean_param()
를 통과할 수 있도록 확실히 해 두어야 한다.Version: $Id$