krigstask, 80 - это реально мало. Ты про вложенность циклов и условий забываешь. А комментарий вообще не пихнуть. Это на С еще можно в 80 как-нибудь уложиться, но вместо нормального выравнивания аргументов иногда получается месиво.
100 символов - более предпочтительнее.
Зачем вашему компу оперативная память, если вы сами не хотите, чтобы софт ее всю использовал?
Отсутствует
100 символов - более предпочтительнее.
Можно и 120, но на маленьком мониторе будет неудобно читать.
Это заблуждение. Длинные строки — зло. Во *всех* руководствах по стилю, для любого сколь угодно современного языка упоминается это ограничение.
Функции, не влезающие в экран --- ещё большее зло. Хотя, я слышал, некоторые товарищи поворачивают монитор на 90 градусов --- и тогда многие функции начинают влезать в экран. Но это, имхо, извращение.
Хотя очень длинные строки (>120)--- действительно зло. Но они обычно и не встречаются, так как в большинстве IDE слева и/или справа обычно находятся панели навигации (class view, file tree, opened files, и.т.д.), отладчика, и т.д.
# rm -rf /
Отсутствует
80 - это реально мало
По моему опыту этого очень даже достаточно. Покажите мне хоть один более-менее распространённый язык (или библиотеку уровня Boost), в котором допускается (заметно) больше 80. А то ваше мнение не очень весомо, знаете ли.
Ты про вложенность циклов и условий забываешь
Как пишут в Linux kernel style guide:
The answer to that is that if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.
А комментарий вообще не пихнуть
Отдельная строка.
Функции, не влезающие в экран --- ещё большее зло
Нет. Зло, но точно не бо́льшее. И вообще, вы там что, стандартизированными СИ экранами код меряете, что ли? «Один экран при нормальных условиях…». Звучит как «Вот я тут сделаю строку в 120 символов вместо двух по 80, тогда всё поместится в экран и не надо исправлять, ура!» Ерунда же.
Отредактировано krigstask (26-05-2012 18:54:20)
Ядрёная консоль делает меня сильней!
Отсутствует
Отдельная строка.
Увеличивающая количество строк в функции.
Покажите мне хоть один более-менее распротранённый язык (или библиотеку уровня Boost), в котором допускается (заметно) больше 80.
Qt.
Нет. Зло, но точно не бо́льшее. И вообще, вы там что, стандартизированными СИ экранами код меряете, что ли? «Один экран при нормальных условиях…». Звучит как «Вот я тут сделаю строку в 120 символов вместо двух по 80, тогда всё поместится в экран и не надо исправлять, ура!» Ерунда же.
Нет, за длиной как строк, так и функций никто особо и не следит, просто все пишут так, как самим удобнее. И оказывается, что на большом мониторе лимит 80 символов является излишним.
# rm -rf /
Отсутствует
Увеличивающая количество строк в функции.
И что?
Qt.
И правда. Не знал.
просто все пишут так, как самим удобнее.
Это гарантия бардака в коде.
И оказывается, что на большом мониторе лимит 80 символов является излишним.
А если кто-то хочет держать на мониторе ещё пару окон? Или панельку открыть пошире?
Вот я хочу держать рядом с gvim'ом терминал. Уменьшаю окно gvim'а до соответствующего 80 символам и всё на ноутбуке помещается. А если на каждом экране кода будут строчки по 100 символов? Либо упорешься читать, либо изволь оставить от терминала огрызок. Та же история у меня с панелью отладки в моей IDEшечке, например.
Короче, вы пишите, как желаете, я только надеюсь, что мне с вашим кодом не придётся дела иметь.
Ядрёная консоль делает меня сильней!
Отсутствует
И что?
И то, что код чрезмерно длинной функции тяжело читать.
Это гарантия бардака в коде.
Длины строк --- это не самый решающий фактор, влияющий на бардак в коде.
А если кто-то хочет держать на мониторе ещё пару окон? Или панельку открыть пошире?Вот я хочу держать рядом с gvim'ом терминал. Уменьшаю окно gvim'а до соответствующего 80 символам и всё на ноутбуке помещается. А если на каждом экране кода будут строчки по 100 символов? Либо упорешься читать, либо изволь оставить от терминала огрызок. Та же история у меня с панелью отладки в моей IDEшечке, например.
У меня как-то всё помещается на экране. Да, когда открыты все панели отладчика, то они иногда закрывают часть кода, но настолько длинные строки как-то редко встречаются. А в качестве терминала я использую yakuake. Зачем мне его постоянно держать на экране?
# rm -rf /
Отсутствует
И то, что код чрезмерно длинной функции тяжело читать.
От добавления строки комментария код функции не становится длиннее. Я уже давно отказался от комментариев на одной строке с кодом, вот это действительно неудобно читать. Ужатие кода в длинные строки только ухудшает читаемость. Если ты пишешь код, ориентируясь на 80 символов в строке и комментарии на отдельных строчках, и получаешь функцию в полтора экрана — разбей её на две. Либо успокойся, если это тяжело сделать без логической нестыковки. Жертвовать объективной читаемостью кода ради экономии на строчках глупо. У кого-то шрифт помельче, и он увидит всю функцию целиком. У другого отладочная панель расположена снизу, и ему всё равно придётся промотать код, а на треть или половину экрана — неважно. В Python, например, где дорожат читаемостью кода как нигде, даже элементарное `if x < 0: return False` разбивают на две строки. Лишняя строка не должна пугать. Если у функции с полдюжины аргументов, то их точно нельзя писать в одну строку, тем более в плюсах.
Длины строк --- это не самый решающий фактор, влияющий на бардак в коде.
Если присмотреться к моим словам внимательней, то можно заметить, что я говорил не о длине строк как таковой.
У меня как-то всё помещается на экране. Да, когда открыты все панели отладчика, то они иногда закрывают часть кода, но настолько длинные строки как-то редко встречаются. А в качестве терминала я использую yakuake. Зачем мне его постоянно держать на экране?
Вот это очень характерное изречение. Кому какое дело, какой там у тебя терминал и как ты его используешь? Если ты работаешь в команде или пишешь что-то открытое, и в твоём коде будет ещё кто-то разбираться, привыкай к наличию стандартов. У кого-то два широкоформатных монитора, а кто-то будет в дороге на нетбуке разглядывать код. И у обоих будут выработаны свои привычки и приёмы работы, и они будут приспособлены к тому, что наиболее обычно. К стандарту. Стандарт — 80 символов в строке. Не хочешь держать рядом терминал постоянно открытым — не надо. Можно открыть что-нибудь ещё, в конце концов. Но 80 символов — (почти) повсеместный стандарт, и наплевательское отношение к нему — наплевательское отношение к другим разработчикам, которые работают с твоим кодом.
Ядрёная консоль делает меня сильней!
Отсутствует
В Python, например, где дорожат читаемостью кода как нигде, даже элементарное `if x < 0: return False` разбивают на две строки.
Это и в плюсах все нормальные люди пишут в 2 строки. One line --- One statement. И дело здесь не в читаемости кода, а в том, что на строку можно поставить breakpoint, а на кусок строки нельзя.
Жертвовать объективной читаемостью кода ради экономии на строчках глупо
Кто бы спорил, но вот утверждение, что лимит в 80 символов --- необходимое условие читаемости объективным никак не является.
Лишняя строка не должна пугать.
Не должна. Но вот только не всегда она улучшит читаемость.
Если у функции с полдюжины аргументов, то их точно нельзя писать в одну строку, тем более в плюсах.
Если полдюжины, то я и не спорю. А вот если 3, то иногда уместнее написать одну строку длиной 100 символов, чем 3 длиной 60.
Кстати, почему «тем более»? Чего такого особенного в плюсах?
Стандарт — 80 символов в строке.
Стандарты везде разные. В частности, там, где я пишу код, длина строки вроде как не лимитирована (в пределах здравого смысла, конечно: если сделать строку в 200 символов, то я думаю, что это никому не понравится --- и мне в том числе).
или пишешь что-то открытое
Ну, когда я буду писать что-то открытое, то я об этом подумаю. Но скорее всего, сделаю лимитом 100 символов, а не 80.
Не хочешь держать рядом терминал постоянно открытым — не надо. Можно открыть что-нибудь ещё, в конце концов.
Можно. Но у меня редактор или IDE всегда находится на отдельном рабочем столе, на котором больше ничего не открыто. Единственное исключение --- там может быть открыта отлаживаемая программа. И иногда таки и программа, и IDE открыты одновременно. Но 80 символов в строке в этом случае не спасут.
Но 80 символов — (почти) повсеместный стандарт, и наплевательское отношение к нему — наплевательское отношение к другим разработчикам, которые работают с твоим кодом.
В Google Style guide есть такой пункт:
You may diverge from the rules when dealing with code that does not conform to this style guide. <...> Use common sense and BE CONSISTENT. В соответствии с этим правилом наш спор теряет подобие всякой осмысленности.
# rm -rf /
Отсутствует
Это и в плюсах все нормальные люди пишут в 2 строки. One line --- One statement. И дело здесь не в читаемости кода, а в том, что на строку можно поставить breakpoint, а на кусок строки нельзя.
На эту строку особенно и незачем ставить, в общем.
Не должна. Но вот только не всегда она улучшит читаемость.
В приведённых выше примерах — улучшит. И обычно как раз улучшает.
А вот если 3, то иногда уместнее написать одну строку длиной 100 символов, чем 3 длиной 60.
Несогласен.
Кстати, почему «тем более»? Чего такого особенного в плюсах?
Плюсы я взял как пример. Просто когда в аргументах функции указывается тип переменной, а не только имя, как раз удобней разбивать на отдельные строки.
Стандарты везде разные. В частности, там, где я пишу код, длина строки вроде как не лимитирована
Да уж я вижу.
Можно. Но у меня редактор или IDE всегда находится на отдельном рабочем столе, на котором больше ничего не открыто. Единственное исключение --- там может быть открыта отлаживаемая программа. И иногда таки и программа, и IDE открыты одновременно. Но 80 символов в строке в этом случае не спасут.
А у кого-то монитор шире, его спасут. Но не с твоим кодом. Поздравляю. Но тебе наплевать.
You may diverge from the rules when dealing with code that does not conform to this style guide. <...> Use common sense and BE CONSISTENT. В соответствии с этим правилом наш спор теряет подобие всякой осмысленности.
Этим правилом можно прикрыть всё, что угодно. А вообще тут имеется в виду «если вляпался в проект, где наши правила не соблюдаются, не нужно всё перекраивать, делай, как все», только и всего. Как раз к длине строк это слабо относится.
Ядрёная консоль делает меня сильней!
Отсутствует
На эту строку особенно и незачем ставить, в общем.
Вот как раз на строку, содержащую return очень даже есть смысл.
В приведённых выше примерах — улучшит. И обычно как раз улучшает.
Во втором примере --- скорее всего, да. В первом --- не всегда.
А у кого-то монитор шире, его спасут. Но не с твоим кодом. Поздравляю. Но тебе наплевать.
Мне не наплевать, просто я иначе расставляю приоритеты. Если бы кому-то другому это было бы принципиально, я думаю, появилось бы правило, запрещающее длинные строки.
Как раз к длине строк это слабо относится.
Почему? Если в проекте есть длинные строки, то с какого перепугу я должен ограничивать себя 80-ю символами?
# rm -rf /
Отсутствует
Вот как раз на строку, содержащую return очень даже есть смысл.
В данном случае и в Python — практически нету.
Во втором примере --- скорее всего, да. В первом --- не всегда.
Второй пример просто смешон. В первом тоже лучше разбивать. А за комментарий внутри строки кода вообще надо штрафовать.
Почему? Если в проекте есть длинные строки, то с какого перепугу я должен ограничивать себя 80-ю символами?
Если на тротуаре уже валяются окурки, свой тоже уже не стоит до урны донести?
okkamas_knife
Чушь уж не надо писать.
Отредактировано krigstask (27-05-2012 10:40:07)
Ядрёная консоль делает меня сильней!
Отсутствует
В данном случае и в Python — практически нету
Про python не скажу, а в C++ очень даже есть. То есть я хочу проверить, какого чёрта он выходит из функции в этом месте. У меня два варианта --- поставить условный breakpoint на строку, содержащую if, либо поставить обычный breakpoint на строку с return'ом. Лично мне больше нравится второй вариант.
Второй пример просто смешон.
Второй пример вовсе даже не смешон, если параметров штук 12, а вместе с комментариями в тех же строках получается порядка 100 символов. Если разместить все комментарии на отдельных строках, то количество строк в одном только прототипе функции увеличится в два (!) раза.
А за комментарий внутри строки кода вообще надо штрафовать.
Этот комментарий является очень существенным в случае, когда параметров много и передаётся константа (например, 0, как там). Без этого комментария тяжело понять, в качестве какого аргумента передаётся 0.
Если на тротуаре уже валяются окурки, свой тоже уже не стоит до урны донести?
Поменьше курить надо --- вредно для здоровья А вообще всё зависит от правил. Если есть правило «нельзя бросать окурки на тротуар», то тогда нужно выбрасывать в урну. А если такого правила нет, то тут всё зависит от идеологических убеждений того, кто бросает. Если он считает это нормальным --- пусть бросает. Если не нравится --- может бросает в урну. Главное --- чтобы не забывал потушить окурок прежде чем бросить: в урне могут быть легко воспламеняющиеся предметы. Аналогия ясна?
# rm -rf /
Отсутствует
Есть StyleCop и его аналоги, которые можно повесить hook в git перед коммитом, а не замарачиваться красотой кода во время создания.
ИМХО, это самый правильный способ.
Зачем вашему компу оперативная память, если вы сами не хотите, чтобы софт ее всю использовал?
Отсутствует
http://astyle.sourceforge.net/astyle.html еще есть.
Я сейчас интересуюсь этим направлением, потому что удаление одних циклов и добавления других очень карёжит код и после коммита можно пробела или таба недосчитаться, что порой бесит (лишняя разница при коммите).
http://sourceforge.net/projects/uncrustify/
http://sourceforge.net/projects/gcgreatcode/
http://www.gnu.org/software/indent/manual/indent.html оказывается есть - там не только GNU-style, который многим не нравится.
Отредактировано Keepun (28-05-2012 00:54:37)
Зачем вашему компу оперативная память, если вы сами не хотите, чтобы софт ее всю использовал?
Отсутствует
Второй пример вовсе даже не смешон, если параметров штук 12, а вместе с комментариями в тех же строках получается порядка 100 символов. Если разместить все комментарии на отдельных строках, то количество строк в одном только прототипе функции увеличится в два (!) раза.
1. Функция с дюжиной аргументов? Что-то неладно в Датском королевстве…
2. Один аргумент и комментарий к нему — строка кода. Дюжина аргументов в одной строке (тем более с указанием типа) — это нечитаемое месиво.
Этот комментарий является очень существенным в случае, когда параметров много и передаётся константа (например, 0, как там). Без этого комментария тяжело понять, в качестве какого аргумента передаётся 0.
Дело не в том, что комментарий не нужен, а в том, что после комментария в строке кода была не должно. Вообще.
Если он считает это нормальным --- пусть бросает.
Позиция ясна, спасибо.
Существует ли официальный стандарт по ограничению длины строк в коде?
Практически везде — 80 символов. Только в Qt (ну, может, ещё где-то) — 100.
Есть StyleCop и его аналоги, которые можно повесить hook в git перед коммитом, а не замарачиваться красотой кода во время создания.
ИМХО, это самый правильный способ.
Смотря что имеется в виду. Если не автокомит того, что этот ваш StyleCop выдаёт, то да, конечно. Сам пользуюсь всякими там pylint. Но доверять этим штукам автоматически нельзя.
Ядрёная консоль делает меня сильней!
Отсутствует
1. Функция с дюжиной аргументов? Что-то неладно в Датском королевстве…
А что не так?
2. Один аргумент и комментарий к нему — строка кода. Дюжина аргументов в одной строке (тем более с указанием типа) — это нечитаемое месиво.
Естественно, когда аргументов дюжина, то они будут на отдельных строках. Комментарии при вызове функции идут только в тех строках, где название передаваемой переменной не говорит само за себя (например, если это константа 0).
Дело не в том, что комментарий не нужен, а в том, что после комментария в строке кода была не должно. Вообще.
Обоснуйте, чем это плохо.
Позиция ясна, спасибо.
Только вот не надо выдирать фразы из контекста. Я же ясно написал:
Если есть правило «нельзя бросать окурки на тротуар», то тогда нужно выбрасывать в урну. А если такого правила нет, то тут всё зависит от идеологических убеждений того, кто бросает.
Практически везде — 80 символов. Только в Qt (ну, может, ещё где-то) — 100.
Нифига не 100. В исходном коде Qt встречаются строки длиной больше 100 символов. Я уже не говорю о том, что это не официальный стандарт, а локальные соглашения для конкретных проектов.
Смотря что имеется в виду. Если не автокомит того, что этот ваш StyleCop выдаёт, то да, конечно. Сам пользуюсь всякими там pylint. Но доверять этим штукам автоматически нельзя.
Насколько я понял, эта штука не меняет код. Она просто проверяет, есть ли в нём несоответствия некоторым формальным правилам, и если есть, то не даёт закоммитить.
# rm -rf /
Отсутствует
1. Функция с дюжиной аргументов? Что-то неладно в Датском королевстве…
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
С http://sourceforge.net/projects/uncrustify/ мне теперь все равно какой стиль кода у проекта, потому что все перегоняется под мой стиль и обратно.
Зачем вашему компу оперативная память, если вы сами не хотите, чтобы софт ее всю использовал?
Отсутствует
Перегнать в определённый стиль я ещё могу себе представить как. А как обратно?
Uncrustify Code Beautifier поддерживает ~410 опций, так что подобрать стиль проекта можно. Да и перегонять обратно нужно только измененные файлы.
Хорошо бы к проекту прикладывать конфиг стиля одной из этих прог и тогда отпадет потребность следить за бессмысленной красотой кода во время его создания. GNU для себя уже решили эту задачку.
Зачем вашему компу оперативная память, если вы сами не хотите, чтобы софт ее всю использовал?
Отсутствует
Оживляем ветку
Расклад таков: у моего прародителя Ubuntu 10.04, поддержка уже совсем скоро заканчивается, нужно бы обновиться. Да вот только привык он уже к гному второму, на KDE, Unity или на третьегном вряд ли переходить захочет. Что порекомендует коллективный разум? Стоит ли ставить гном и переключать в классический режим? Достаточно ли стабилен MATE? Или проще плюнуть на всё и ставить Xubuntu?
P.S. а на работе скоро на Windows 7 переходят, прогресс, фигли.
Отсутствует
ксубунту ставить однозначно. 12.04
а там глядишь и мате дозреет или прародитель привыкнет к крысе
Каждый ответственен за то добро, которое не совершил.
Отсутствует
ксубунту ставить однозначно. 12.04
а там глядишь и мате дозреет или прародитель привыкнет к крысе
Знать бы ещё, как ксубунту на двух мониторах работает с интеловской карточкой...
Отсутствует