Angerslave
Новичок
Ну, думаю, можно сделать несколько вариантов типа зенд/пеар/что-то среднее, но главное чтоб небыло каши, что один метод в одном стиле, другой в другом, а третий ваще в одну строчку...
при активной заинтересованности team, которая щас готовит phpconfАвтор оригинала: kode
займёт максимум неделю
Комментарии должны объяснять не код, а алгоритмы реализованные в этом коде. Повторяй эту фразу до тех пор пока на тебя не снизойдет просветление.А если серьезно как по мне код должен быть таким простым и понятным чтоб не нужны были коменты.
То, что я описал - это как раз и есть комментарии к коду, а не описание классов/функций.Это описание класса, что он делает и как. А далеко не коментарии кода.
У класса есть 2 сущности - интерфейс и реализация. Комментарии к интерфейсу говорят что делает класс, а комментарии к реализации говорят как он это делает. Вы хотите сказать что в публикуемом коде должны быть только комментарии к интерфейсу, а то, как работает данный класс должно оставаться тайной за семью печатями?вот я именно против - как это делает.
Чтобы использовать чужие классы нужно иметь описание его интерфейса и знать что он делает, но если в один прекрасный день где-то внутри этого класса будет найден баг, то для его устранения понадобится знания того как реализован класс и для упрощения процесса поиска той-же ошибки лишними не будут комментарии к реализации отвечающие на вопрос как класс это делает.Я если качаю и использую чужие решения так я не хочу разбератся что где и как - а просто plug and play.
Полностью согласен. Но, я уже вижу коменты в стиле: "//check if exist method". Вот такое будет повсеместно встречатся. И это больше запутывает меня чем мифический алгоритм который я не смогу понять сходу.и для упрощения процесса поиска той-же ошибки лишними не будут комментарии к реализации отвечающие на вопрос как класс это делает.
Думаю комментарии на русском (это конечно плохо) запрещать нельзя.....Автор оригинала: HraKK
Полностью согласен. Но, я уже вижу коменты в стиле: "//check if exist method". Вот такое будет повсеместно встречатся. И это больше запутывает меня чем мифический алгоритм который я не смогу понять сходу.
Я предлогаю ввести 2 вида комментариев - API + в самом начале описание класса с ответами на то что он делает и как он делает в общих чертах.
<?php
/**
* Abstract container
*
*/
abstract class Container {
/**
* Contained binary data
*
* @var mixed
*/
protected $container;
} //end of class Container
/**
* Object Oriented Represintation of Multibyte string
*
*/
class MBString extends Container {
/**
* Binary container for our string
*
* @var string
*/
protected $encoding = "UTF-8";
/**
* Constructor. First argument - binary string
*
* @param string $string
* @param string $encoding
*/
public function __construct($string,$encoding="UTF-8"){
settype($string,"string");
if($encoding != $this->encoding){
$this->encoding = $encoding;
}
$this->container = $string;
} //end of constructor
/**
* Return length of string
*
* @return int
*/
public function length(){
return mb_strlen($this->container,$this->encoding);
} //end of method length
/**
* Return part of contained string
*
* @param int $start
* @param int $length
* @return MBString
*/
public function cut($start,$length=null){
return new MBString(($length)?mb_substr($this->container,$start,$length,$this->encoding):
mb_substr($this->container,$start,$this->length(),$this->encoding),$this->encoding);
} //end of method substr
/**
* Return position of 'needle' character
*
* @param string $haystack
* @param string $needle
* @param int $offset
* @return MBString
*/
public function pos($needle, $offset=0){
return new MBString(mb_strpos($this->container,$needle,$offset,$this->encoding),$this->encoding);
} //end of method strpos
/**
* Returns used character encoding
*
* @return MBString
*/
public function getEncoding(){
return new MBString($this->encoding,$this->encoding);
} //end of method getEncoding
/**
* Magic method, return native binary string
*
* @return string
*/
public function __toString(){
return $this->container;
} //end of method __toString
//...etc
} //end of class MBString
?>