LINUX.ORG.RU

История изменений

Исправление 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
{

3. На дух не переношу языков с динамической типизацией, но многда приходится. Поэтому иногда делаю вот так (JavaScript):
/*object*/ trips.ValidateDate=function(/*string*/ date)
4. Очень рекомендую в начале файла писать о чем все это. Ибо, когда по прошествию нескольких лет открываешь файл с кодом, приходится долго медитировать пытаясь осознать, что же ты здесь ваял. Также вначале файла я веду список TODO - тех, которые не попали в общий код.

Исходная версия 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
{

3. На дух не переношу языков с динамической типизацией, но многда приходится. Поэтому иногда делаю вот так (JavaScript):
/*object*/ trips.ValidateDate=function(/*string*/ date)
4. Очень рекомендую в начале файла писать о чем все это. Ибо, когда по прошествию нескольких лет открываешь файл с кодом, приходится долго медитировать пытаясь осознать, что же ты здесь ваял. Также вначале файла я веду список TODO - тех, которые не попали в общий код.