Почему вы не объявляете несколько переменных одного типа в одной строке? - PullRequest
15 голосов
/ 19 сентября 2008

Почему плохая практика объявлять переменные в одной строке?

, например

private String var1, var2, var3

вместо:

private String var1;
private String var2;
private String var3;

Ответы [ 16 ]

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

А как насчет дела, такого как:

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

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

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

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

0 голосов
/ 22 августа 2018

при попытке ответить на этот вопрос https://www.interviewbit.com/problems/remove-element-from-array/

Метод 1 дает предел памяти, превышенный для этого кода:

Тип 1:

int i,j;

Тип 2:

int i;
int j;

тип 1: превышен предел памяти

int removeElement  (int* A, int n1, int B) 
{
    int k=0, i;
    for(i=0;i<n1;i++)
        if(A[i]!=B)
        {
            A[k]=A[i];
            k++;
        }    
    return k;
}

В то время как тип 2 работает отлично

int removeElement  (int* A, int n1, int B) 
{
    int k=0;
    int i;
    for(i=0;i<n1;i++)
        if(A[i]!=B)
        {
            A[k]=A[i];
            k++;
        }    
    return k;
}
0 голосов
/ 19 сентября 2008

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

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

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

0 голосов
/ 19 сентября 2008

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

string a,b;
if (Foo())
{
  a = "Something";
  b = "Something else";
}
else
{
  a = "Some other thing";
  b = "Out of examples";
}
0 голосов
/ 19 сентября 2008
  1. , чтобы быть более очевидным для вас при использовании инструментов контроля версий (покрыто Мишелем)
  2. чтобы быть более читабельным для вас, когда у вас простейшая ошибка переполнения / недостаточного заполнения или компиляции, и ваши глаза не смогли указать на очевидное
  3. для защиты противоположного (т. Е. Многопараметрическое однострочное объявление) имеет меньше плюсов («кодовая текстовая вертикальная видимость» является одиночным)
0 голосов
/ 19 сентября 2008

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

...