2008-09-19 9 views

ответ

7

Я думаю, что существуют различные причины, но все они сводятся к тому, что первое является просто менее читабельным и более склонны к неудаче, потому что одна строка делает больше, чем одно.

И все, что без реального выигрыша, и не говорите мне, что вы находите две линии спасенного пространства - это реальный выигрыш.

Это нечто подобное тому, что происходит, когда у вас есть

if ((foo = some_function()) == 0) { 
    //do something 
} 

Конечно, этот пример гораздо хуже, чем у вас.

5

Потому что в некоторых языках, var2 и var3 в вашем примере будет не быть строками, они будут варианты (нетипизированных).

21

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

Если несколько переменных находятся в одной строке, вы рискуете иметь конфликты для несвязанных изменений различными разработчиками.

0

Согласитесь с edg, а также потому, что для обслуживания каждой переменной в отдельной строке более удобно и легко поддерживать обслуживание. Вы сразу видите тип, область действия и другие модификаторы, а когда вы изменяете модификатор, он применяется только к переменной, которую вы хотите, - что позволяет избежать ошибок.

6

С отдельными линиями у вас есть возможность добавить комментарий к каждой строке, описывающей использование переменной (если это не ясно из ее имени).

+2

Хотя было бы лучше переименовать переменную в этом случае? – 2008-11-26 00:01:10

3

Вот мои причины:

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

в C++:

int * i, j; 

i имеет тип int *, j имеет тип int. Различие слишком легко пропущено.

Помимо того, что их на одной линии, каждый делает его легче добавить некоторые комментарии позже

4

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

float fMin, fMax;

Однако я убегаю, когда переменные не связаны между собой, например.

int iBalance, iColor;

0
  1. быть более очевидным для вас при использовании инструментов управления версий (охватываемых Michel)
  2. быть более удобной для чтения к вам, когда у вас есть простейшее переполнение/опустошение или ошибка компиляции, и ваши глаза не смогли указать на очевидно,
  3. защищать противоположность (то есть многострочный объявление переменной однострочный) имеет меньше плюсов («код текстуальное вертикальная видимость» быть синглтон)
9

в C/C++, у вас есть такая проблема, что *, используемый для указания типа указателя, применяется только к следующему id entifier. Таким образом, довольно распространенная ошибка неопытных разработчиков писать

int* var1, var2, var3; 

и ожидали все три переменные будут типа «Int указателя», в то время как для компилятора это читается как

int* var1; 
int var2; 
int var3; 

делает только var1 указатель.

2

насчет случая, такие как:

public static final int NORTH = 0, 
         EAST = 1, 
         SOUTH = 2, 
         WEST = 3; 

Это считается плохой практикой, а? Я считаю, что все в порядке, как это счетчики некоторые из пунктов сделанных ранее:

  • они все, безусловно, будет тот же самый тип (в моем статически типизированных Java-мир)
  • комментарии могут быть добавлены для каждого
  • если вам нужно изменить тип для одного, вам, вероятно, придется это сделать для всех, и все четыре могут быть сделаны за одну смену.

Итак, в примере (хотя и вонючий код) есть причины, Это так?

+1

одна проблема с этим: если вы добавляете больше переменных и забываете сменять точки с запятой запятыми. ;) – endolith 2013-02-14 20:21:19

0

Это плохая практика, когда вы можете и хотите инициализировать переменные на торможении. Пример, где это может быть не так плохо:

string a,b; 
if (Foo()) 
{ 
    a = "Something"; 
    b = "Something else"; 
} 
else 
{ 
    a = "Some other thing"; 
    b = "Out of examples"; 
} 
4

Почему эта плохая практика? Я не думаю, что это так, если ваш код все еще доступен для чтения.

+1

Ваш «лучший» стиль - это то, что я обычно использую на языках, требующих объявления переменных. Это немного более СУХОЙ, сохраняя при этом читаемость. – 2010-08-09 01:57:03

0

Обычно это касается вопросов контроля версий и комментариев, обсуждаемых другими, и я применил бы это в 95% случаев. однако есть обстоятельства, когда это имеет смысл, например, если я кодирую графику, и хочу, чтобы пара переменных представляла координаты текстуры (всегда ссылаясь на условные обозначения как s и t), тогда объявляя их как

int s , t; // координаты текстуры

IMHO улучшает читаемость кода как путем сокращения кода, так и за счет того, что эти две переменные принадлежат друг другу (конечно, некоторые из них будут спорить об использовании в этом случае одной переменной класса точек).

4

Релевантность.

Просто потому, что две переменные имеют тип String, это не значит, что они тесно связаны друг с другом.

Если две (или более) переменные тесно связаны функцией, а не переменным типом, то, возможно, они могут быть объявлены вместе. то есть только в том случае, если читатель вашей программы имеет смысл видеть две переменные вместе, если они действительно будут размещены вместе.

 Смежные вопросы

  • Нет связанных вопросов^_^