Тут в соседней ветке подняли вопрос обсуждения стиля, человек даже задумался о смене работы из-за этого, и я решил вынести на суд общественности несколько мыслей по этому поводу.
Практически в любом зрелом языке программирования (С++, Java, С#, Python и т.д) проблемы стиля практически решены. Существует набор стандартных стилей кодирования, лучше которых врядли что-нибудь придумают. Но чтобы решить проблему стиля раз и навсегда, нужно внедрить стиль на уровне языка программирования.
Пусть ребята которые составляют стандарты языков, соберутся и в следующей версии стандарта определят стиль программирования на этом языке, на уровне грамматики языка.
Программы, которые будут писаться без учета требований стандарта по стилю, не будут просто компилироваться, как синтаксически не правильные.
Причем это не должно быть рекомендацией или warning'м, это не должно вообще компилироваться.
Например:
for( — не допустимо
for ( — компилируется
И так далее...
Аргументы "за":
Как отмечено выше, вы согласитесь, что практически для любого популярного и зрелого языка существует один распространенный стиль программирования (ну или несколько самых распространненых)
Например: В Java от Sun, в С++ от Бьярна и т.д Еще есть всякие рекомендации типа венгерской нотации...
Слишком много времени тратится на борьбу со стилем. Конфликты по поводу стиля возникают постоянно, в компиляторах куча настроек для поддержания стиля, куча всяких тулов для переформатирования кода... Это все исчезнет, если стиль не будет отделим от грамматики языка, жестко раз и навсегда.
Не существует идеального стиля программирования. Не возможно доказать, что лучше ставить "{" сразу после названия функции или с новой строки. Соответственно нет смысла вносить разногласия, разрешая несколько возможностей.
Очень много времени тратится на формирования стиля команды, документирование его, публикацию на wiki, чтобы все члены команды ему следовали, контроль за его соблюдением, препирательства и так далее.
В любом более менее большом проекте стиль программирования должен быть стандартным, думаю с этим сложно спорить. Обычно стили, используемые командами очень схожи между собой. Поэтому в любом проекте должен применятся стандартный стиль программирования.
Работа станет эффективней, не будет проблем при смене работы, так как стиль везде один — стандартный.
Если стиль будет стандартизирован, то во все популярные IDE будет возможность просто встроить автоматическое форматирование текста, в соответствии со стандартом.
Стандартизация стиля возможна только если не будет альтернативы. Много программистов заменяют while на during? Они этого не делают, так как это просто запрещено, а иначе кто-нибудь точно так писал бы и на форуме появлялись бы новые сообщения о том, что так жить не можно...
Некоторые вещи не проверяются, как например венгерская нотация или перфиксы set/get, но можно и их включить в стандарт, почему нет.
Тоже самое и с пропусками (табуляции, пробелы), надо чтобы они тоже учитывались компиляторами, для поддержания этого требования стандарта, достаточно просто ввести автоформатирование в IDE, чтобы у программиста об этом голова не болела.
И все — будет стандарт, не будет стилевых войн и разногласий, наступит мир во всем мире.
Здравствуйте, BishopMorton, Вы писали:
BM>Как отмечено выше, вы согласитесь, что практически для любого популярного и зрелого языка существует один распространенный стиль программирования (ну или несколько самых распространненых) BM>Например: В Java от Sun, в С++ от Бьярна и т.д Еще есть всякие рекомендации типа венгерской нотации...
Нет не согласимся. Возможно вы плохо знакомы с С++ и "стиля" Бьярна.
Здравствуйте, minorlogic, Вы писали:
M>Нет не согласимся. Возможно вы плохо знакомы с С++ и "стиля" Бьярна.
Не важно "стиля" Бьярна или кого бы то ни было, главное сам факт стандартизации, чтобы не было кривотолков.
по поду стиля в с++ тут примерно одни и те же полиси во всех конторах... поэтому мне интересно, что там вы видете такого особенного, что нельзя стандартизировать.
кто-то пишет мемберы классов с m_, кто-то начиная с _, кто то myvar_, кто-то itsMyVariable
кто-то опишет void foo(){
а кто-то
void foo()
{
Кто-то использует венгерскую нотацию, кто-то нет.
кто-то называет clsMyClass, кто-то СMyClass, кто-то MyClass
и т.д
все разночтения можно привести к одному знаменателю.
M>Возможно вы плохо знакомы с С++
Приведите плз пример по поводу С++, чтобы не быть голословным?
Здравствуйте, BishopMorton, Вы писали:
BM>Тут в соседней ветке подняли вопрос обсуждения стиля, человек даже задумался о смене работы из-за этого, и я решил вынести на суд общественности несколько мыслей по этому поводу.
BM>Практически в любом зрелом языке программирования (С++, Java, С#, Python и т.д) проблемы стиля практически решены. Существует набор стандартных стилей кодирования, лучше которых врядли что-нибудь придумают. Но чтобы решить проблему стиля раз и навсегда, нужно внедрить стиль на уровне языка программирования.
Полумерами проблему не решить — следует запретить на уровне стандарта все остальные языки программирования. Еще всех программистов стандартизировать не помешает, а то они думают по разному, по разному мысли свои через исходный код излагают. Ну и чтоб строем все ходили и песни строевые пели. Тогда будет порядок
Здравствуйте, BishopMorton, Вы писали:
BM>Тут в соседней ветке подняли вопрос обсуждения стиля, человек даже задумался о смене работы из-за этого, и я решил вынести на суд общественности несколько мыслей по этому поводу.
вы внимательно читали ту соседнюю ветку? там речь шла вообще-то не о пробелах, скобках и т.д. — а о неиспользовании классических и общепринятых логических конструкций при кодировании. и изобретении жуткого велосипеда
подобное ни одним компилятором проверяться не сможет
пс: да и пробелы, табы и скобки не на тех местах в общем-то почти и не раздражают.. дело не в них совсем
Здравствуйте, BishopMorton, Вы писали:
BM>Здравствуйте, minorlogic, Вы писали:
M>>Нет не согласимся. Возможно вы плохо знакомы с С++ и "стиля" Бьярна.
BM>Не важно "стиля" Бьярна или кого бы то ни было, главное сам факт стандартизации, чтобы не было кривотолков.
BM>по поду стиля в с++ тут примерно одни и те же полиси во всех конторах... поэтому мне интересно, что там вы видете такого особенного, что нельзя стандартизировать.
BM>кто-то пишет мемберы классов с m_, кто-то начиная с _, кто то myvar_, кто-то itsMyVariable
BM>кто-то опишет void foo(){ BM>а кто-то BM>void foo() BM>{
BM>Кто-то использует венгерскую нотацию, кто-то нет.
BM>кто-то называет clsMyClass, кто-то СMyClass, кто-то MyClass
BM>и т.д
BM>все разночтения можно привести к одному знаменателю.
Это вы издеваетесь ? да ?
в С++ буквально 3-4 стандарта которые принципиально ПРОТИВОРЕЧАТ друг другу. О каком знаменателе идет речь ?
Здравствуйте, minorlogic, Вы писали:
BM>>все разночтения можно привести к одному знаменателю.
M>Это вы издеваетесь ? да ? M>в С++ буквально 3-4 стандарта которые принципиально ПРОТИВОРЕЧАТ друг другу. О каком знаменателе идет речь ?
у меня складывается ощущение, что вы о чем-то другом говорите, поэтому пример, поясняющий вашу мысль был очень показателен, чтобы понять о чем вы пытаетесь сказать.
Здравствуйте, брюн, Вы писали:
Б>вы внимательно читали ту соседнюю ветку? там речь шла вообще-то не о пробелах, скобках и т.д. — а о неиспользовании классических и общепринятых логических конструкций при кодировании. и изобретении жуткого велосипеда
Я лишь о стиле, как таковом, а не о проблеме из соседней ветке, ничего про саму суть проблемы, обсуждаемой там, я не упоминал, если бы то, о чем я написал относилось к тому, что там обсуждают я бы написал прямо туда.
Здравствуйте, alsemm, Вы писали:
A>Полумерами проблему не решить — следует запретить на уровне стандарта все остальные языки программирования. Еще всех программистов стандартизировать не помешает, а то они думают по разному, по разному мысли свои через исходный код излагают. Ну и чтоб строем все ходили и песни строевые пели. Тогда будет порядок
Проблему нужно решать для каждого языка отдельно, языки, как вы сами прекрасно знаете, отличаются не только синтаксисом...
A>по разному мысли свои через исходный код излагают.
Главное мысли, а не правила их корректного изложения. Вы же не будете утверждать, что нужно отменить правила правописания, грамматику и т.д, например, для Русского языка?
А что пусть кто как хочет так и пишет, хочешь по русски, хочешь по албански
Про Вавилонскую башню читали ?
Стандарт для стиля это лишь правила написания, он никак не может сказаться на собственно содержании.
Здравствуйте, BishopMorton, Вы писали:
BM>Здравствуйте, брюн, Вы писали:
Б>>вы внимательно читали ту соседнюю ветку? там речь шла вообще-то не о пробелах, скобках и т.д. — а о неиспользовании классических и общепринятых логических конструкций при кодировании. и изобретении жуткого велосипеда
BM>Я лишь о стиле, как таковом, а не о проблеме из соседней ветке, ничего про саму суть проблемы, обсуждаемой там, я не упоминал, если бы то, о чем я написал относилось к тому, что там обсуждают я бы написал прямо туда.
в самом деле? тогда может не надо было упоминать соседнюю ветку
Здравствуйте, BishopMorton!
BM>Например: В Java от Sun, в С++ от Бьярна...
Я пока не готов использовать пропорциональный шрифт в тексте программы (в TCPL об этом сказано, не совет, конечно же, но вот так пишет Бьярн)
Хотя... может и привыкнуть получится
P.S. тут кто-то из форумчан пишет так, давно был разговор, не помню
Здравствуйте, BishopMorton, Вы писали:
BM>А что пусть кто как хочет так и пишет, хочешь по русски, хочешь по албански BM>Про Вавилонскую башню читали ?
А не надо было начинать ее строить
BM>Стандарт для стиля это лишь правила написания, он никак не может сказаться на собственно содержании.
Стандарт для стиля = стихотворный размер. Отменять ямб, хорей, дактиль... глупо. Можно дать рекомендации, жестких рамок устанавливать нельзя, иначе пользоваться языком никто не будут.
Здравствуйте, BishopMorton!
BM>Стандарт для стиля это лишь правила написания, он никак не может сказаться на собственно содержании.
Есть старое наблюдение, что лучшие писатели иногда пренебрегают правилами риторики. Однако, когда они это делают, читатель обычно находит в тексте какие-то компенсирующие достоинства, достигнутые ценой этого нарушения. Пока кто-то не уверен, что он сможет сделать то же самое, ему, вероятно, лучше всего следовать правилам.
Здравствуйте, BishopMorton!
BM>Стандарт для стиля это лишь правила написания
Под правилами написания традиционно (в "обычных" языках) понимается лексика, синтаксис (это всё вроде грамматика)
Стиль не может быть неправильным, он может быть хорошим или не очень (с точки зрения читателя) или попросту непонятен читателю (Улисс Джойса весьма стиле-образен)
Здравствуйте, Iron_droid!
I_>Да, особенно будут наслаждаться миром те, кто привык писать (например) if(ptr), а теперь вынуждены писать if(ptr != NULL).
Кстати, с некоторых пор пишу не if( !value ), а if( value == 0 ) // ну или NULL там, по смыслу в общем
Знак ! такой маленький, не углядишь порой
P.S. if( value ) конечно же так и пишу, безо всяких != чему-то-там-такому-эдакому
>Слишком много времени тратится на борьбу со стилем. Конфликты по поводу стиля возникают постоянно, в компиляторах куча >настроек для поддержания стиля, куча всяких тулов для переформатирования кода... Это все исчезнет, если стиль не будет >отделим от грамматики языка, жестко раз и навсегда.
Правда? Даже если все будут ставить разное количество пробелов и по-разному расставлять скобки — это в самом деле так уж мешает? Конечно, хорошо когда все единообразно, но IMHO в реальности это ни сколько не затрудняет чтение когда. Вот хитрые конструкции — это да, но к форматированию когда это имеет очень отдаленное отношение.
Здравствуйте, kosmik, Вы писали:
K>Вот хитрые конструкции — это да
А хитрые конструкции вообще нужно искоренять , вот нет в Java множественного наследования, а в С++ есть, оно там есть затем получилось, что пришлось еще и virtual вводить для него и так далее... одно тянет другое, появляются новые сложности, которые может и не нужны вовсе , правда всегда есть что спросить на собеседовании , например, зачем нужно virtual наследование
K>реальности это ни сколько не затрудняет чтение когда
Работали когда-нибудь в саппорте, чтобы нужно было много ковыряться в чужом коде?
когда у вас весь код из одних согласных букв состоит, и блин автору их было так жалко, что он старался их экономить и, по возможности, использовать 3, 4 и 5(!) буквенные сочетания...
Я даже, вот книгу Мартина перечитываю (Быстрая разработка... ) и очень режет глаз, его код, когда постоянно все мемберы классов начинаются на its... блин, бесит реально
Да и вообще в понятие стиля входит много всего и не только "форматирование"
Я бы даже запретил бы писать функции больше определенного кол-ва строк , чтобы не повадно было 10 страничных монстров городить.