Войти
ПрограммированиеФорумОбщее

Прозрачность кода в C++

Страницы: 1 2 320 21 Следующая »
#0
12:46, 27 июня 2009

    Люди, помогите решить такой вопрос. Приведу пример:
    Есть программист Петя. Он прочитал очень много книг по программированию, и вообще умный парень :). И, так как, Петя прочитал много умных книг (Александреску к примеру), он соответственно пишет умный код, используя различные фишки с++, например, очень любит шаблоны (такие вещи типа статического полиморфизма и еще много всего связанного с шаблонами и обобщенным программированием) или использует сложные тернарные операторы… ну и т.д. … Соответственно код работает и все хорошо.
    Как-то в разговоре с Петей ему сказали, что если так прогать, то может получиться непрозрачный код.
    На что он ответил: «Если алгоритм написан верно, и Каму-то непонятен код, то проблема в том что человек просто плохо образован в плане программирования. Ибо кто-то, например, не знает что такое классы и ему будет не прозрачен код, в котором используют классы или обычное наследование. И соответственно не писать же все процедурно, из-за того, что кто-то не знает что такое классы. А само понятие прозрачности кода - ерунда ».

    От сюда вопрос, Прав ли Петя и что такое вообще «Прозрачность кода»? Или действительно код не может быть  написан «Заумно», а тот, кто так считает, просто плохо знает стандарт языка.


#1
12:52, 27 июня 2009

Вахтанг Кикабидзе
Ты Петя?:-D

#2
12:53, 27 июня 2009

Вахтанг Кикабидзе
> И, так как, Петя прочитал много умных книг (Александреску к примеру), он
> соответственно пишет умный код, используя различные фишки с++

Если Петя прочитал Александреску и стал так делать везде, то это совсем не умный код, это гавнокод ИМХО...
Это называется пушкой по воробьям, когда достаточно рогатки...
Лично я вообще не приемлю то, о чём пишет Александреску, но допускаю, что это можно использовать в определённых специфических случаях сэкономив приличное количество времени и сил, хоть и читаемость кода при этом упадёт ниже плинтуса...

#3
12:56, 27 июня 2009

Чем выше квалификация - тем проще код.  Тем логичнее разделение на функциональные единицы, тем проще конструкции.

Т.е. есть кодинг-стандарт, есть следование ему. Чем выше квалификация, тем проще держаться в рамках N готовых "шаблонных" конструкций из кодинг-стандарта.

#4
12:58, 27 июня 2009

2 OberMeister
Если бы я был Петей :), я бы эту тему не создавал.

2 IronPeter
кодинг-стандарт ? чем или где он определяется ?

#5
14:29, 27 июня 2009

я считаю, что если конструкция как минимум компилируется, то всё отлично
в плюсах, особенно если писать по заветам Александреску, сам факт компилируемости - половина успеха : ))

простота кода - вещь относительная
зависит от квалификации ревьюера

к счастью есть возможность скрывать сколь угодно "заумную" имплементацию за простыми интерфейсам

хороший код от говнокода легко отличается по одному лишь поверхностному взгляду
если в методе больше десяти строк, и в классе больше десяти методов, - однозначно говнокод : )))

и вообще ИМХО разумно использовать все фишки языка
не делать так, это сознательно обеднять свою речь
вернее свой код

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

и если кто-то не понимает, - это его личные проблемы
пускай учится

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

и это хорошо
пока язык живёт и развивается, не знаю даже как сказать, в общем работать с ним гораздо приятнее от одного только осознания факта развития, ну и подстёгивает тоже, - не отставать : )))

#6
15:01, 27 июня 2009

Sh.Tac.

Это типа сарказм такой?

#7
15:07, 27 июня 2009

Sh.Tac.
> хороший код от говнокода легко отличается по одному лишь поверхностному
> взгляду
> если в методе больше десяти строк, и в классе больше десяти методов, -
> однозначно говнокод : )))

Хорошее определение, главное краткое. Надо будет запомнить:)
Вопрос только, не может ли быть говнокодом то, что имеет менее 10 строк в методе, и менее 10 методов в классе?

#8
15:35, 27 июня 2009

Sh.Tac.
> если в методе больше десяти строк, и в классе больше десяти методов, -
> однозначно говнокод : )))

Не согласен... Уж лучше 100 простых строк, чем десять строк на шаблонах, с вплетением макросов и собственного ещё хитрожопого препроцессора, что вообщемто очень любят делать многие начитавшиеся умных книжек...

> и вообще ИМХО разумно использовать все фишки языка

ИМХО разумно использовать лишь там, где это оправдано, в противном случае не разумно...
К тому же есть не очень разумные и не очень удобные фишки, такое юзать вредно...

#9
15:48, 27 июня 2009

Don Nikola
>Это типа сарказм такой?

открываю переводное издание "современного проектирования на С++" на странице 86 и читаю:
Это означает, что мы вообще больше не будем писать программы, а заставим компилятор делать это за нас

как минимум гениально ( !! )

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

Executor
>Уж лучше 100 простых строк, чем десять строк на шаблонах, с вплетением макросов и собственного ещё хитрожопого препроцессора
важно понимать ЗАЧЕМ это делается
(см. выше, выделено жирным)

#10
15:58, 27 июня 2009

Sh.Tac.
> Это означает, что мы вообще больше не будем писать программы, а заставим
> компилятор делать это за нас
>
> как минимум гениально ( !! )

Каким образом компилятор будет писать за нас программу?

#11
15:59, 27 июня 2009

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

Может выглядеть примерно как:

http://www.possibility.com/Cpp/CppCodingStandard.html

И обычно содержит много проектно-специфичных вещей. Про кодоген, макросы, свои шаблоны и классы, ассерты и прочее.

Если какой-нибудь фрукт захочет, к примеру, использовать boost, а корпоративный кодинг-стандарт не упоминает boost, то будут веские основания оный не использовать.

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

#12
16:00, 27 июня 2009

IronPeter
> Может выглядеть примерно как:
хорошая ссылка

#13
16:23, 27 июня 2009

Sh.Tac.

>как минимум гениально ( !! )

Как минимум бред.

>>Уж лучше 100 простых строк, чем десять строк на шаблонах, с вплетением макросов и собственного ещё хитрожопого препроцессора
>важно понимать ЗАЧЕМ это делается

Так еще один изначально интересный инструмент стал очередной самоцелью. Как обычно.

#14
16:44, 27 июня 2009

Executor
>Каким образом компилятор будет писать за нас программу?
читай Александреску : )))
вряд ли я сумею рассказать лучше

Don Nikola
>Так еще один изначально интересный инструмент стал очередной самоцелью.
один ( ! ) программист, воружённый этой методикой и хорошим компилятором, может сделать много полезного и качественного

больше и лучше, чем, скажем, десяток "средне-взвешенных" программистов (особенно касается "многостаночников" которым по-барабану на чём писать)

роль "заполнителя" классов и методов кодом отдаётся компилятору
преимущества
+ с компилятором бывает проще найти "общий язык", не надо писать никаких ТЗ, нужно лишь написать скромный код шаблона
+ компилятор работает быстрее программиста
+ компилятор не делает ошибок
- "мир зохватят гоботы"

Страницы: 1 2 320 21 Следующая »
ПрограммированиеФорумОбщее