Стиль не должен быть отделим от содержания
От: BishopMorton Россия  
Дата: 01.10.08 16:17
Оценка: 2 (1) +2 -8 :))) :))
Тут в соседней ветке подняли вопрос обсуждения стиля, человек даже задумался о смене работы из-за этого, и я решил вынести на суд общественности несколько мыслей по этому поводу.

Практически в любом зрелом языке программирования (С++, Java, С#, Python и т.д) проблемы стиля практически решены. Существует набор стандартных стилей кодирования, лучше которых врядли что-нибудь придумают. Но чтобы решить проблему стиля раз и навсегда, нужно внедрить стиль на уровне языка программирования.

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

Причем это не должно быть рекомендацией или warning'м, это не должно вообще компилироваться.
Например:
for( — не допустимо
for ( — компилируется

И так далее...

Аргументы "за":

Как отмечено выше, вы согласитесь, что практически для любого популярного и зрелого языка существует один распространенный стиль программирования (ну или несколько самых распространненых)
Например: В Java от Sun, в С++ от Бьярна и т.д Еще есть всякие рекомендации типа венгерской нотации...

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

Не существует идеального стиля программирования. Не возможно доказать, что лучше ставить "{" сразу после названия функции или с новой строки. Соответственно нет смысла вносить разногласия, разрешая несколько возможностей.

Очень много времени тратится на формирования стиля команды, документирование его, публикацию на wiki, чтобы все члены команды ему следовали, контроль за его соблюдением, препирательства и так далее.

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

Работа станет эффективней, не будет проблем при смене работы, так как стиль везде один — стандартный.

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


Стандартизация стиля возможна только если не будет альтернативы. Много программистов заменяют while на during? Они этого не делают, так как это просто запрещено, а иначе кто-нибудь точно так писал бы и на форуме появлялись бы новые сообщения о том, что так жить не можно...

Некоторые вещи не проверяются, как например венгерская нотация или перфиксы set/get, но можно и их включить в стандарт, почему нет.
Тоже самое и с пропусками (табуляции, пробелы), надо чтобы они тоже учитывались компиляторами, для поддержания этого требования стандарта, достаточно просто ввести автоформатирование в IDE, чтобы у программиста об этом голова не болела.

И все — будет стандарт, не будет стилевых войн и разногласий, наступит мир во всем мире.


02.10.08 15:55: Перенесено из 'О работе'
When money talks... nobody checks the grammar.
Re: Стиль не должен быть отделим от содержания
От: minorlogic Украина  
Дата: 01.10.08 16:34
Оценка:
Здравствуйте, BishopMorton, Вы писали:

BM>Как отмечено выше, вы согласитесь, что практически для любого популярного и зрелого языка существует один распространенный стиль программирования (ну или несколько самых распространненых)

BM>Например: В Java от Sun, в С++ от Бьярна и т.д Еще есть всякие рекомендации типа венгерской нотации...

Нет не согласимся. Возможно вы плохо знакомы с С++ и "стиля" Бьярна.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Стиль не должен быть отделим от содержания
От: COFF  
Дата: 01.10.08 16:37
Оценка:
Здравствуйте, BishopMorton, Вы писали:

BM>Слишком много времени тратится на борьбу со стилем.


Вы сами себе и ответили :)
Re[2]: Стиль не должен быть отделим от содержания
От: BishopMorton Россия  
Дата: 01.10.08 17:15
Оценка: -1
Здравствуйте, minorlogic, Вы писали:

M>Нет не согласимся. Возможно вы плохо знакомы с С++ и "стиля" Бьярна.


Не важно "стиля" Бьярна или кого бы то ни было, главное сам факт стандартизации, чтобы не было кривотолков.

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

кто-то пишет мемберы классов с m_, кто-то начиная с _, кто то myvar_, кто-то itsMyVariable

кто-то опишет void foo(){
а кто-то
void foo()
{

Кто-то использует венгерскую нотацию, кто-то нет.

кто-то называет clsMyClass, кто-то СMyClass, кто-то MyClass

и т.д

все разночтения можно привести к одному знаменателю.

M>Возможно вы плохо знакомы с С++

Приведите плз пример по поводу С++, чтобы не быть голословным?
When money talks... nobody checks the grammar.
Re: Стиль не должен быть отделим от содержания
От: alsemm Россия  
Дата: 01.10.08 17:31
Оценка: -1 :)
Здравствуйте, BishopMorton, Вы писали:

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


BM>Практически в любом зрелом языке программирования (С++, Java, С#, Python и т.д) проблемы стиля практически решены. Существует набор стандартных стилей кодирования, лучше которых врядли что-нибудь придумают. Но чтобы решить проблему стиля раз и навсегда, нужно внедрить стиль на уровне языка программирования.

Полумерами проблему не решить — следует запретить на уровне стандарта все остальные языки программирования. Еще всех программистов стандартизировать не помешает, а то они думают по разному, по разному мысли свои через исходный код излагают. Ну и чтоб строем все ходили и песни строевые пели. Тогда будет порядок

Алексей
Re: Стиль не должен быть отделим от содержания
От: брюн Украина  
Дата: 01.10.08 17:31
Оценка:
Здравствуйте, BishopMorton, Вы писали:

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

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

подобное ни одним компилятором проверяться не сможет

пс: да и пробелы, табы и скобки не на тех местах в общем-то почти и не раздражают.. дело не в них совсем
Re[3]: Стиль не должен быть отделим от содержания
От: minorlogic Украина  
Дата: 01.10.08 17:38
Оценка: +2
Здравствуйте, 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 стандарта которые принципиально ПРОТИВОРЕЧАТ друг другу. О каком знаменателе идет речь ?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: Стиль не должен быть отделим от содержания
От: BishopMorton Россия  
Дата: 01.10.08 18:16
Оценка:
Здравствуйте, minorlogic, Вы писали:

BM>>все разночтения можно привести к одному знаменателю.


M>Это вы издеваетесь ? да ?

M>в С++ буквально 3-4 стандарта которые принципиально ПРОТИВОРЕЧАТ друг другу. О каком знаменателе идет речь ?

приведите пример противоречия, в вашем понимании?

Я написал об этом
http://en.wikipedia.org/wiki/Programming_style

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

Возьмите

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
http://en.wikibooks.org/wiki/C%2B%2B_Programming/Code_Style
http://geosoft.no/development/cppstyle.html

вы утверждаете, что нет ничего общего?
По моему большинство рекомендаций однаковы и присутствуют во многих соглашениях о стиле.
When money talks... nobody checks the grammar.
Re[2]: Стиль не должен быть отделим от содержания
От: BishopMorton Россия  
Дата: 01.10.08 18:22
Оценка:
Здравствуйте, брюн, Вы писали:

Б>вы внимательно читали ту соседнюю ветку? там речь шла вообще-то не о пробелах, скобках и т.д. — а о неиспользовании классических и общепринятых логических конструкций при кодировании. и изобретении жуткого велосипеда


Я лишь о стиле, как таковом, а не о проблеме из соседней ветке, ничего про саму суть проблемы, обсуждаемой там, я не упоминал, если бы то, о чем я написал относилось к тому, что там обсуждают я бы написал прямо туда.
When money talks... nobody checks the grammar.
Re[2]: Стиль не должен быть отделим от содержания
От: BishopMorton Россия  
Дата: 01.10.08 18:25
Оценка:
Здравствуйте, alsemm, Вы писали:

A>Полумерами проблему не решить — следует запретить на уровне стандарта все остальные языки программирования. Еще всех программистов стандартизировать не помешает, а то они думают по разному, по разному мысли свои через исходный код излагают. Ну и чтоб строем все ходили и песни строевые пели. Тогда будет порядок


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

A>по разному мысли свои через исходный код излагают.

Главное мысли, а не правила их корректного изложения. Вы же не будете утверждать, что нужно отменить правила правописания, грамматику и т.д, например, для Русского языка?
А что пусть кто как хочет так и пишет, хочешь по русски, хочешь по албански
Про Вавилонскую башню читали ?

Стандарт для стиля это лишь правила написания, он никак не может сказаться на собственно содержании.
When money talks... nobody checks the grammar.
Re[3]: Стиль не должен быть отделим от содержания
От: брюн Украина  
Дата: 01.10.08 18:31
Оценка:
Здравствуйте, BishopMorton, Вы писали:

BM>Здравствуйте, брюн, Вы писали:


Б>>вы внимательно читали ту соседнюю ветку? там речь шла вообще-то не о пробелах, скобках и т.д. — а о неиспользовании классических и общепринятых логических конструкций при кодировании. и изобретении жуткого велосипеда


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

в самом деле? тогда может не надо было упоминать соседнюю ветку
Re: Стиль не должен быть отделим от содержания
От: Iron_droid Россия  
Дата: 01.10.08 19:11
Оценка:
Здравствуйте, BishopMorton, Вы писали:

BM>И все — будет стандарт, не будет стилевых войн и разногласий, наступит мир во всем мире.


Да, особенно будут наслаждаться миром те, кто привык писать (например) if(ptr), а теперь вынуждены писать if(ptr != NULL).

Но это так, к слову.

А если серьёзно — вы действительно считаете, что отсутствие единого стиля — главная и самая приоритетная проблема стандарта?
Re: Пропорциональный шрифт
От: SergeCpp Россия http://zoozahita.ru
Дата: 01.10.08 19:44
Оценка:
Здравствуйте, BishopMorton!

BM>Например: В Java от Sun, в С++ от Бьярна...

Я пока не готов использовать пропорциональный шрифт в тексте программы (в TCPL об этом сказано, не совет, конечно же, но вот так пишет Бьярн)

Хотя... может и привыкнуть получится

P.S. тут кто-то из форумчан пишет так, давно был разговор, не помню
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[3]: Стиль не должен быть отделим от содержания
От: alsemm Россия  
Дата: 01.10.08 19:46
Оценка:
Здравствуйте, BishopMorton, Вы писали:

BM>А что пусть кто как хочет так и пишет, хочешь по русски, хочешь по албански

BM>Про Вавилонскую башню читали ?
А не надо было начинать ее строить

BM>Стандарт для стиля это лишь правила написания, он никак не может сказаться на собственно содержании.

Стандарт для стиля = стихотворный размер. Отменять ямб, хорей, дактиль... глупо. Можно дать рекомендации, жестких рамок устанавливать нельзя, иначе пользоваться языком никто не будут.

Алексей
Re[3]: Стиль
От: SergeCpp Россия http://zoozahita.ru
Дата: 01.10.08 19:52
Оценка: +3
Здравствуйте, BishopMorton!

BM>Стандарт для стиля это лишь правила написания, он никак не может сказаться на собственно содержании.

Есть старое наблюдение, что лучшие писатели иногда пренебрегают правилами риторики. Однако, когда они это делают, читатель обычно находит в тексте какие-то компенсирующие достоинства, достигнутые ценой этого нарушения. Пока кто-то не уверен, что он сможет сделать то же самое, ему, вероятно, лучше всего следовать правилам.

Вильям Странк, Элвин Б. Уайт. Элементы стиля

Это эпиграф к главе "Стиль" книги Практика программирования Кернигана и Пайка

...выделил
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[3]: Стиль
От: SergeCpp Россия http://zoozahita.ru
Дата: 01.10.08 20:01
Оценка:
Здравствуйте, BishopMorton!

BM>Стандарт для стиля это лишь правила написания


Под правилами написания традиционно (в "обычных" языках) понимается лексика, синтаксис (это всё вроде грамматика)

Стиль не может быть неправильным, он может быть хорошим или не очень (с точки зрения читателя) или попросту непонятен читателю (Улисс Джойса весьма стиле-образен)
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Стиль не должен быть отделим от содержания
От: SergeCpp Россия http://zoozahita.ru
Дата: 01.10.08 20:10
Оценка:
Здравствуйте, Iron_droid!

I_>Да, особенно будут наслаждаться миром те, кто привык писать (например) if(ptr), а теперь вынуждены писать if(ptr != NULL).


Кстати, с некоторых пор пишу не if( !value ), а if( value == 0 ) // ну или NULL там, по смыслу в общем

Знак ! такой маленький, не углядишь порой

P.S. if( value ) конечно же так и пишу, безо всяких != чему-то-там-такому-эдакому
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[3]: Стиль не должен быть отделим от содержания
От: SergeCpp Россия http://zoozahita.ru
Дата: 01.10.08 20:14
Оценка:
...если value будет объектом класса с оператором bool, напишу if( value == false )
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re: Стиль не должен быть отделим от содержания
От: kosmik Россия http://www.linkedin.com/in/kosmik
Дата: 01.10.08 20:16
Оценка:
>Слишком много времени тратится на борьбу со стилем. Конфликты по поводу стиля возникают постоянно, в компиляторах куча
>настроек для поддержания стиля, куча всяких тулов для переформатирования кода... Это все исчезнет, если стиль не будет
>отделим от грамматики языка, жестко раз и навсегда.

Правда? Даже если все будут ставить разное количество пробелов и по-разному расставлять скобки — это в самом деле так уж мешает? Конечно, хорошо когда все единообразно, но IMHO в реальности это ни сколько не затрудняет чтение когда. Вот хитрые конструкции — это да, но к форматированию когда это имеет очень отдаленное отношение.
Re[2]: Стиль не должен быть отделим от содержания
От: BishopMorton Россия  
Дата: 01.10.08 20:44
Оценка:
Здравствуйте, kosmik, Вы писали:

K>Вот хитрые конструкции — это да

А хитрые конструкции вообще нужно искоренять , вот нет в Java множественного наследования, а в С++ есть, оно там есть затем получилось, что пришлось еще и virtual вводить для него и так далее... одно тянет другое, появляются новые сложности, которые может и не нужны вовсе , правда всегда есть что спросить на собеседовании , например, зачем нужно virtual наследование

K>реальности это ни сколько не затрудняет чтение когда

Работали когда-нибудь в саппорте, чтобы нужно было много ковыряться в чужом коде?
когда у вас весь код из одних согласных букв состоит, и блин автору их было так жалко, что он старался их экономить и, по возможности, использовать 3, 4 и 5(!) буквенные сочетания...

Я даже, вот книгу Мартина перечитываю (Быстрая разработка... ) и очень режет глаз, его код, когда постоянно все мемберы классов начинаются на its... блин, бесит реально

Да и вообще в понятие стиля входит много всего и не только "форматирование"

Я бы даже запретил бы писать функции больше определенного кол-ва строк , чтобы не повадно было 10 страничных монстров городить.
When money talks... nobody checks the grammar.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.