Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
int main()
{
int a,b;
// Принять от пользователя два числа
cin>>a;
cin>>b;
//Завести переменную для результата сложения
double sum = a+b;
// Вернуть результат сложения
cout<<sum;
}
cout<<sum
" — это «Вернуть результат сложения» я вижу и без комментария.искусство написания комментариев является неотъемлемой частью искусства программирования, поэтому комментарии писать надо, и, как бы пафосно это не звучало, но написанию качественных комментариев надо учиться.
Я уже несколько лет не работаю в одиночку. Код который я пишу, тут же подхватывают другие разработчики, и наоборот.
И если кто то пишет код который через месяц/два/10 лет он сам или кто то другой не сможет прочесть...
// Проверяем что элемент не установлен
if( STATE_NOT_SET == item->state() )
{
// Устанавливаем начальное состояние
item->setState( STATE_INITIAL );
}
// Элемент может быть не установлен если к нему еще никто не обращался.
// В таком случае считаем что это новый элемент и у него начальное состояние.
if( STATE_NOT_SET == item->state() )
{
item->setState( STATE_INITIAL );
}
void initItemState(Item& item)
{
if( STATE_NOT_SET == item.state() )
{
item.setState( STATE_INITIAL );
}
}
// устанавливаем состояние my_item в начальное значение, если оно ещё не установлено
initItemState(my_item);
initItemStateIfStateNotSet(my_item);
// устанавливаем состояние my_item в начальное значение, если оно ещё не установлено
initItemStateIfStateNotSet(my_item);
if( STATE_NOT_SET == item->state() )
{
item->setState( STATE_INITIAL );
}
class Item
{
Item() : _state(STATE_INITIAL){}
}
class Foo
{
void UsingItemFunction()
{
Item item;
//клиент использует item
}
}
class MyItem
{
function _constructor() {
$this->_state = STATE_INITIAL;
}
}
class ClientItem extends MyItem
{
function _construct($state) {
$this->_stat = $state; // опечатка КЛИЕНТА
}
}
Но моя мысль была такой, что реализация ф-ий в очень редких случаях требует комментариев
с = a + b;
d = a - b;
return c*d-c/d;
с = sum(a, b);
d = sub(a, b);
return sub(mul(c, d), div(c, d));
возможно конкретно вы не можете справиться с этой сложностью...Такое ощущение, что вы вообще не читали мой пример. Где вы увидели, что у нас были проблемы с декомпозицией на коротенькие функции?
В целом не столь важно каким способом именно вы разделяете сложную структуру на более мелкие части, но вы всегда можете это сделать неудачно (или вообще не сделать) и получить функции в 200 строк или файлы по «N тысяч строк».С чего вы взяли, что мы сделали «неудачно», получив функции в несколько сотен строк? Наоборот, очень удачно, очень удобно и достигли желаемого нами эффекта — искать проблемы в том конкретном коде стало намного легче и удобнее. А вот какая конкретная польза была бы от вашей повторной декомпозиции в том конкретном случае — вы почему-то скромно умалчиваете, предпочитая отделываться лишь общими словами (проектирование, абстракции) да грязными, ничем необоснованными намеками («возможно конкретно вы не можете справиться с этой сложностью — может не хватает знаний, опыта или талантов»).
Если имеется метод, внутри которого без комментариев не разобраться — его нужно рефакторить.
Я считаю, что комментарии должны быть только к методам, классам, модулям и т.п., но никак не к строкам кода
// Принять от пользователя два числа // Завести переменную для результата сложения // Вернуть результат сложения
function calc($a, $b) {
// возвращаем сумму параметров
return $a + $b;
}
// проверяем, что calc складывает два числа
assertEqual(calc(2, 2) , 4)
$customers = array_merge(getAllCustomersFromSaintPetersbergInRussiaInLastYear(), getAllCustomersFromSaintPetersbergInRussiaInCurrentYear);
this.put(theGun).to(your.head).then(function(){
this.pull(theTrigger);
},this);
Как правильно комментировать код