Почему это "некрасивый" код?
От: Micker  
Дата: 13.02.07 08:58
Оценка:
Привет!

Всегда мне не нравились определения вида
double a = 6.0,
       b = 0.0,
       c = 0.5;

Особенно, если ещё и смешать указатели, массивы и простые инстансы.

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

        std::string
             wavOnSearchStarted = "onSearchStarted.wav"
            ,wavViaSearching = "viaSearching.wav"
            ,wavOnTimeout = "onTimeout.wav"
            ,wavOnFound = "onFound.wav"
            ,wavOnArchieveStarted = "onArchieveStarted.wav"
            ,wavViaArchieving = "viaArchieving.wav"
            ,wavOnArchieved = "onArchieved.wav"
            ;

Экономит что ли...

Может ли кто-то сказать веские аргументы за или против таких объявлений?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re: Почему это "некрасивый" код?
От: jazzer Россия Skype: enerjazzer
Дата: 13.02.07 09:01
Оценка:
Здравствуйте, Micker, Вы писали:

M>Может ли кто-то сказать веские аргументы за или против таких объявлений?


Аргумент один — coding style guide в вашей группе/компании.
Никаких реальных аргументов предпочесть одно другому нет, дело исключительно личного вкуса.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Почему это "некрасивый" код?
От: Какая разница Украина  
Дата: 13.02.07 09:12
Оценка: +3
Здравствуйте, Micker, Вы писали:

Если твой коллега нарушает coding style то бороться следует
а если нет то перестань доставать коллегу

PS Сам не люблю такой стиль описания переменных
но еще больше не люблю борцов за справедливость которые выносят
это на уровень священных воен
!0xDEAD
Re[2]: Почему это "некрасивый" код?
От: Micker  
Дата: 13.02.07 09:19
Оценка:
КР>Если твой коллега нарушает coding style то бороться следует
А если речь идет как раз о его создании и хочется что бы выбор того или иного стиля был максимльно аргументирован?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re[3]: Почему это "некрасивый" код?
От: Аноним  
Дата: 13.02.07 09:23
Оценка:
Здравствуйте, Micker, Вы писали:

КР>>Если твой коллега нарушает coding style то бороться следует

M>А если речь идет как раз о его создании и хочется чтобы выбор того или иного стиля был максимльно аргументирован?

Ну так это ему следует аргументировать свою экзотику.
Re: Почему это "некрасивый" код?
От: elmal  
Дата: 13.02.07 09:25
Оценка:
Здравствуйте, Micker, Вы писали:

M>Привет!


M>Всегда мне не нравились определения вида

M>
M>double a = 6.0,
M>       b = 0.0,
M>       c = 0.5;
M>

M>Особенно, если ещё и смешать указатели, массивы и простые инстансы.

Могу приблизительно аргументировать почему мне не нравится:
1) Если тип переменной b потребуется заменить на float например, то это затронет следущие за этим переменные;
2) Зрительно мне лично приятно, когда тип переменной находится близко к имени;
3) Существуют языки, которые такую запись бы рассматривали как: для a тип определен, а b и c имеют динамический тип. Соответственно может внести путаницу;
4) Существуют языки (сходу щас не назову), где откомментировать что значит переменная a будет проблемой, например нельзя использовать однострочный комментарий //.

ИМХО конечно
Re: Почему это "некрасивый" код?
От: ilnar Россия  
Дата: 13.02.07 09:32
Оценка: +2
Здравствуйте, Micker, Вы писали:

M>Может ли кто-то сказать веские аргументы за или против таких объявлений?


чисто из привычек человеческих языков, где рекомендуется знаки препинания ставить после слова и пробелом потом, а не наоборот пристраивать к следующему слову
Re[4]: Почему это "некрасивый" код?
От: Аноним  
Дата: 13.02.07 09:36
Оценка: +1 -1
А>Ну так это ему следует аргументировать свою экзотику.

а тут и аргументировать нечего, минимум кода всегда предпочтительнее, так как легче понимать.
Re[3]: Почему это "некрасивый" код?
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 13.02.07 09:41
Оценка: 3 (3) +1 :)
Здравствуйте, Micker, Вы писали:

КР>>Если твой коллега нарушает coding style то бороться следует

M>А если речь идет как раз о его создании и хочется что бы выбор того или иного стиля был максимльно аргументирован?

Не знаю на сколько это серьезная аргументация, но в институте товарищ в цепочке таких определений нечаяно поставил ";" вместо "," — сработал неявный int (исходный тип был float) — все откомпилилось, а потом дООлго три человека искали сначала ошибку в алгоритме, потом долго думали почем 1/2 = 0, и только потом нашли злочастную ";"
С уважением, Владислав Полищук
Re[5]: Почему это "некрасивый" код?
От: Аноним  
Дата: 13.02.07 09:51
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>>Ну так это ему следует аргументировать свою экзотику.


А>а тут и аргументировать нечего, минимум кода всегда предпочтительнее, так как легче понимать.


Какой минимум? Как я понял, речь идет о том где ставить запятую — в начале строки или в конце.
Re: Почему это "некрасивый" код?
От: igna Россия  
Дата: 13.02.07 10:14
Оценка: :)
Здравствуйте, Micker, Вы писали:

M>Может ли кто-то сказать веские аргументы за или против таких объявлений?


Аргумент "за" — Чтобы другому было трудно понять. У него самого с чтением чужого кода проблем не возникает, он привык. Это как левша-фехтовальщик, теннисист или боксер.
Re: Почему это "некрасивый" код?
От: minorlogic Украина  
Дата: 13.02.07 12:56
Оценка:
Здравствуйте, Micker, Вы писали:

M>Привет!

....
M>Может ли кто-то сказать веские аргументы за или против таких объявлений?

Так это же вам не нравится, может это вы нам поведаете ?
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Почему это "некрасивый" код?
От: Micker  
Дата: 13.02.07 13:48
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>>Может ли кто-то сказать веские аргументы за или против таких объявлений?


M>Так это же вам не нравится, может это вы нам поведаете ?


Я просил высказать как против так и за.
Спасибо тем, кто высказался по делу, особенно товарищу vladpol, который привел "случай из жизни". Лично мне хватило в свое время высказывания Страуструпа — "Язык программирования С++" — п 4.9.2 "Объявление нескольких имен" о плохой читаемости этого кода.

Я подозревал, что могут возникнуть проблемы описанные и vladpol и elmal (о том, что может понадобится поменять тип 1-й переменной, а замениь сразу всем), но к счастью еще не сталкивался с такими бедами.

Вы не считаете, что такие объявления череваты последствиями или не являются удобочитаемыми?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re[3]: Почему это "некрасивый" код?
От: Lorenzo_LAMAS  
Дата: 13.02.07 13:54
Оценка:
Я вот лично согласен скорее с jazzer'ом, а ситуация, описанная vladpol — это крайний случай, нормальный компилятор С++/С такого попросту не допустит (причем это уж больше 10 лет так).
Of course, the code must be complete enough to compile and link.
Re[4]: Почему это "некрасивый" код?
От: Micker  
Дата: 13.02.07 14:05
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Я вот лично согласен скорее с jazzer'ом, а ситуация, описанная vladpol — это крайний случай, нормальный компилятор С++/С такого попросту не допустит (причем это уж больше 10 лет так).



Удивительно, но я с ним тоже согласен. Вас наверное, как и "Какая разница" жалко моего коллегу (представляю какая картина предстоит вашим взглядам — затюканный перец, который ночами в хранилище перелоавчивает код, что бы объеденить объявления еще 3-х переменных)?

Но у нас нет пока полиси. Его предстоит создать. Хочется, что бы его требования были обоснованные, а не выясненные простым голосованием присутствующих.Для этого-то я спросил ваше мнение.

Очень легко жить, когда за тебя решили как жить хорошо (по написанному полиси). Сложнее понять — как же будет хорошо (написать полиси).
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re[5]: Почему это "некрасивый" код?
От: Lorenzo_LAMAS  
Дата: 13.02.07 14:16
Оценка: +1 :)
M>Удивительно, но я с ним тоже согласен. Вас наверное, как и "Какая разница" жалко моего коллегу (представляю какая картина предстоит вашим взглядам — затюканный перец, который ночами в хранилище перелоавчивает код, что бы объеденить объявления еще 3-х переменных)?

Не, мне безразличен и твой коллега, и ты Причем одинаково.
Я видел много примеров офигенно кривого форматирования и приведенный тобою пример — это не страшно
Я имел и иногда имею дело с кодом, в котором зачастую вообще нет сколько-нибудь упорядоченного форматирования — пишут его ооочень неглупые люди, которые способны понимать вещи, недоступные мне (предметная область у них на порядки посложнее программирования), однако нормально писать они не могут — постоянные проблемы с отступами, мешанина из табов и пробелов — и т.п. Мне приставать к ним с такой фигней — стыдно. Раз им так удобно — пусть Лишь бы не падало и не текло

M>Но у нас нет пока полиси. Его предстоит создать. Хочется, что бы его требования были обоснованные, а не выясненные простым голосованием присутствующих.Для этого-то я спросил ваше мнение.


ИМХО — как раз никакой обоснованности тут и не может быть, а только результат голосования — все эти "удобно/неудобно читаемо/нечитаемо" — 100% субъективно. Это ж не то же самое, как обсуждать, использовать ли смарт_поинтеры или нет, использовать ли стандартный вектор или писать голимы new double[size] и т.п. — там реально объективные доводы.

M>Очень легко жить, когда за тебя решили как жить хорошо (по написанному полиси). Сложнее понять — как же будет хорошо (написать полиси).


Блин, это все философия уже какая-то Надо чтобы проги работали
Я, когда понадобилось, легко привык к определенному стилю форматирования и именования и никаких проблем у меня не было, а если пишу что-то для себя, например, я оформляю по-другому.
Of course, the code must be complete enough to compile and link.
Re[5]: Почему это "некрасивый" код?
От: Какая разница Украина  
Дата: 13.02.07 14:17
Оценка: +1
Здравствуйте, Micker, Вы писали:


M>Но у нас нет пока полиси. Его предстоит создать. Хочется, что бы его требования были обоснованные, а не выясненные простым голосованием присутствующих.Для этого-то я спросил ваше мнение.


Мое имхо — выносить в code style rules тему топика я не стал бы
Когда объем этих rules становится большой то эти правила стараются нарушить
Есть бодее важные правила которые стоит занести в code style
!0xDEAD
Re: Почему это "некрасивый" код?
От: Centaur Россия  
Дата: 13.02.07 15:08
Оценка: +1 :))
Здравствуйте, Micker, Вы писали:

M>
M>        std::string
M>             wavOnSearchStarted = "onSearchStarted.wav"
M>            ,wavViaSearching = "viaSearching.wav"
M>            ,wavOnTimeout = "onTimeout.wav"
M>            ,wavOnFound = "onFound.wav"
M>            ,wavOnArchieveStarted = "onArchieveStarted.wav"
M>            ,wavViaArchieving = "viaArchieving.wav"
M>            ,wavOnArchieved = "onArchieved.wav"
M>            ;
M>

M>Экономит что ли...

M>Может ли кто-то сказать веские аргументы за или против таких объявлений?


Мне здесь не нравится на уровне кода три вещи:
Первые два пункта я могу понять и простить: при таком оформлении кода удобно добавлять новые переменные в этот список, и остаётся возможность поменять тип сразу всем.

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

И, наконец, если в таком объявлении будут вместе объявлены значения, ссылки и указатели, то, вероятно, буду бить по рукам (разносить в отдельные объявления, если понадобится работать над таким исходником).


Если же отвлечься от кода и осмотреться на уровень выше, то таких фич, как непрерывное воспроизведение звука в процессе поиска или архивации в программе быть не должно.
Re[3]: Почему это "некрасивый" код?
От: minorlogic Украина  
Дата: 13.02.07 15:25
Оценка:
Здравствуйте, Micker, Вы писали:

...

M>Вы не считаете, что такие объявления череваты последствиями или не являются удобочитаемыми?



Да мне по большей части все равно. Я считаю что внимание и время надо на другое тратить. А уж тем более не стоит этого чтобы с человеком ссориться.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Почему это "некрасивый" код?
От: minorlogic Украина  
Дата: 13.02.07 15:38
Оценка: 1 (1)
Как пример того на что следует обращать внимание , это

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

2. Значит скорее всего нет разделения данные — код.

3. Значения могли бы задаваться константно в изолированном месте.

например можно так

class soundId
{
    typedef id std::string;
  
    static const id wavOnSearchStarted;
    static const id wavViaSearching;
    static const id wavOnTimeout;
    static const id wavOnFound;
    static const id wavOnArchieveStarted;
    static const id wavViaArchieving;
    static const id wavOnArchieved;
};


ну и т.п. Прошу пример не судить строго, это первое что пришло в голову.
Ищу работу, 3D, SLAM, computer graphics/vision.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.