История изменений
Исправление Kroz, (текущая версия) :
Хороший топик.
Приписываю себя к быдлокодерам, но все же выскажу свое мнение.
1. Нужно стремиться к тому, чтобы код был понятен без комментариев. Этому способствует осмысленные названия функций/переменных, ну, и следование определенным правилам именования переменных/функций/... Расчитываем на человека с IQ over 90 (то есть не полных дебилов, но и не экстрасенсов).
2. В коде комментарии нужны там, где нужно объяснить логику операции, если это не понятно из кода, или чтобы обозначить какой-то логический блок, опять же, когда это улучшает понимание программы. Еще у меня есть пометки TODO и BUG - чтобы потом незабыть поправить. Например (ничего что C++?):
vector<unsigned char> numbers; // Array starts with 3 and has a step of 2: 3, 5, 7, 9 ... //// Без комментария неочевидно
inline uint NumberToIndex(const uint number) {return (number-3)/2;}; // BUG: number should not be < 3
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet //// Объясняет смысл условия
if (!IsPrime(head)) { // Is not prime //// Из кода логика понятна; это скорее обозначает логический блог
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime //// Вот вторая часть логического блока
/*********** Multithreading using OpenMP ***********/ //// У меня было много однотипных функций, отличающихся в основном этим участком - тестировал разные методы multithreading. Комментарий чтобы обратить внимание именно на этот участок.
#pragma omp parallel
{
MarkNonPrime3(this,head,max);
}
}
}
void DeCrypt()
// Decrypting backward: simpliest method
{
void DeCrypt2()
// Decrypting forward
{
/*object*/ trips.ValidateDate=function(/*string*/ date)
Исходная версия Kroz, :
Хороший топик.
Приписываю себя к быдлокодерам, но все же выскажу свое мнение.
1. Нужно стремиться к тому, чтобы код был понятен без комментариев. Этому способствует осмысленные названия функций/переменных, ну, и следование определенным правилам именования переменных/функций/... Расчитываем на человека с IQ over 90 (то есть не полных дебилов, но и не экстрасенсов). 2. В коде комментарии нужны там, где нужно объяснить логику операции, если это не понятно из кода, или чтобы обозначить какой-то логический блок, опять же, когда это улучшает понимание программы. Еще у меня есть пометки TODO и BUG - чтобы потом незабыть поправить. Например (ничего что C++?):
vector<unsigned char> numbers; // Array starts with 3 and has a step of 2: 3, 5, 7, 9 ... //// Без комментария неочевидно
inline uint NumberToIndex(const uint number) {return (number-3)/2;}; // BUG: number should not be < 3
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet //// Объясняет смысл условия
if (!IsPrime(head)) { // Is not prime //// Из кода логика понятна; это скорее обозначает логический блог
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime //// Вот вторая часть логического блока
/*********** Multithreading using OpenMP ***********/ //// У меня было много однотипных функций, отличающихся в основном этим участком - тестировал разные методы multithreading. Комментарий чтобы обратить внимание именно на этот участок.
#pragma omp parallel
{
MarkNonPrime3(this,head,max);
}
}
}
void DeCrypt()
// Decrypting backward: simpliest method
{
void DeCrypt2()
// Decrypting forward
{
/*object*/ trips.ValidateDate=function(/*string*/ date)