Избыточные кодовые конструкции - PullRequest
7 голосов
/ 26 сентября 2008

Наиболее вопиюще избыточная кодовая конструкция, которую я часто вижу, включает в себя использование кодовой последовательности

if (condition)
    return true;
else
    return false;

вместо простого написания

return (condition);

Я видел эту ошибку новичка во всех видах языков: от Pascal и C до PHP и Java. Какие еще подобные конструкции вы бы отметили в обзоре кода?

Ответы [ 19 ]

11 голосов
/ 26 сентября 2008
if (foo == true)
{
   do stuff
}

Я все время говорю разработчику, который делает то, что должно быть

if ((foo == true) == true)
{
   do stuff
}

но он еще не получил подсказку.

10 голосов
/ 26 сентября 2008
if (condition == true)
{
  ...
}

вместо

if (condition)
{
  ...
}

Edit:

или даже хуже и оборачивается условным тестом:

if (condition == false)
{
  ...
}

, который легко читается как

if (condition) then ...
8 голосов
/ 26 сентября 2008

Использование комментариев вместо управления исходным кодом:
-Комментирование или переименование функций вместо их удаления и уверенность в том, что контроль версий может вернуть их вам при необходимости.
-Добавление комментариев, таких как «RWF Change» вместо того, чтобы просто сделать изменение и позволить исходному контролю назначить вину.

5 голосов
/ 26 сентября 2008

Где-то я заметил эту вещь, которую я считаю вершиной булевой избыточности:

return (test == 1)? ((test == 0) ? 0 : 1) : ((test == 0) ? 0 : 1);

: -)

4 голосов
/ 26 сентября 2008

Объявление отдельно от назначения на языках, отличных от C:

int foo;  
foo = GetFoo();
4 голосов
/ 26 сентября 2008

Избыточный код сам по себе не является ошибкой. Но если вы действительно пытаетесь сохранить каждого персонажа

return (condition);

тоже избыточно. Вы можете написать:

return condition;
3 голосов
/ 26 сентября 2008

У меня когда-то был парень, который неоднократно делал это:

bool a;
bool b;
...
if (a == true)
    b = true;
else
    b = false;
3 голосов
/ 26 сентября 2008
void myfunction() {
  if(condition) {
    // Do some stuff
    if(othercond) {
      // Do more stuff
    }
  }
}

вместо

void myfunction() {
  if(!condition)
    return;

  // Do some stuff

  if(!othercond)
    return;

  // Do more stuff
}
2 голосов
/ 26 сентября 2008

Использование .tostring для строки

2 голосов
/ 26 сентября 2008

Установка оператора exit в качестве первого оператора в функции, чтобы отключить выполнение этой функции, вместо одного из следующих параметров:

  • Полное удаление функции
  • Комментирование тела функции
  • Сохранение функции, но удаление всего кода

Использование exit в качестве первого утверждения делает его очень трудным для обнаружения, вы можете легко прочитать его.

...