- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Люди, помогите решить такой вопрос. Приведу пример:
Есть программист Петя. Он прочитал очень много книг по программированию,
и вообще умный парень :). И, так как, Петя прочитал много умных книг (Александреску к примеру),
он соответственно пишет умный код, используя различные фишки с++, например,
очень любит шаблоны (такие вещи типа статического полиморфизма и еще много
всего связанного с шаблонами и обобщенным программированием) или использует
сложные тернарные операторы… ну и т.д. … Соответственно код работает и все хорошо.
Как-то в разговоре с Петей ему сказали, что если так прогать, то может получиться
непрозрачный код.
На что он ответил: «Если алгоритм написан верно, и Каму-то непонятен код, то
проблема в том что человек просто плохо образован в плане программирования.
Ибо кто-то, например, не знает что такое классы и ему будет не прозрачен код,
в котором используют классы или обычное наследование. И соответственно не
писать же все процедурно, из-за того, что кто-то не знает что такое классы.
А само понятие прозрачности кода - ерунда ».
От сюда вопрос, Прав ли Петя и что такое вообще «Прозрачность кода»?
Или действительно код не может быть написан «Заумно», а тот, кто так
считает, просто плохо знает стандарт языка.
Вопрос совершенно серьёзный. //Не холивар.
CPPGovno 29.09.2011 08:44 # +2
в самом деле, ну что можно сказать нового о паттернах после GoF?
я это всё знаю сказал я себе и машинально поставил книгу обратно на полку
потом спустя какое-то время до меня начали доходить отголоски и мнения касательно этой книги, что это действительно новое слово в программировании
ну новое так новое, надо бы ознакомиться
книга была куплена, вдохновенные предисловия прочитаны одним махом и...
дальше я встрял на первой же главе, обилие "жёстких" шаблонов в тексте напомнило мне о студенческих временах, когда мне приходилось делать вид, что я понимаю разнообразные закорючки в учебниках по матану
неприятие было ровно такое же
какие-то абстрактные заумные закорючки
поэтому дальше я просто заставил себя всё это прочитать...
но без практики (вернее без сопряжения с ней, тогда на работе хреначил какой-то очередной ударный ОО код) увы, чтение это оказалось бесполезным и всё быстренько повыветрилось
мол прикольно, но непонятно как это использовать, где это использовать и главное, зачем это использовать?
но некоторые идеи мне показались прикольными
особенно в части разумной альтернативы ОО подходу, с ортогональными стратегиями и всеобщей идеологией переноса всего что только можно на стадию компиляции
на работе я пытался "ошаблонить" некоторые текущие задачки, но получалось как-то громозко неклюже, и главное совсем не к месту, код прекрасно смотрелся и работал без этого
CPPGovno 29.09.2011 23:18 # −1
istem 30.09.2011 01:01 # +1
absolut 30.09.2011 06:28 # +1
Kirinyale 30.09.2011 08:54 # 0
Хотя, боюсь, обрывков в гк-форме не хватит, чтобы оценить его как следует.
Teddy_Brown 30.09.2011 08:57 # 0
TarasB 30.09.2011 09:22 # 0
niXman 02.10.2011 20:08 # +4
SmackMyBitchUp 02.10.2011 20:36 # 0
CPPGovno 29.09.2011 08:45 # +3
так продолжалось до тех пор, пока я не перешёл в контору, где лид-архитект работал в парадигме GP
признаться я и раньше заглядывал в исходники STL и boost и обилие шаблонов всегда вымораживало
какие-то вещи казались просто магией, например пустые шаблоны, содержащие в себе лишь typedef
если такую пустую конструкцию убрать,
то компилятор начинал выдавать километры невнятных сообщений
а тут я увидел прямо в коде игрового сервера феерический веер шаблонов
отступать было некуда
пришлось сесть и разбираться
и тут я увидел на практике КАК это работает
первую же мою задачу я старался выдержать в духе увиденного, параллельно сверяясь с Александреску, я честно нахреначил две стратегии, одна из которых так потом и не пригодилась, и постарался написать код, просто визуально похожий, лаконичный, с кучей угловых скобочек и двойных двоеточий, благо что исходными "кубиками" послужил boost где такого добра навалом
дальше больше и вуаля, я взял барьер непонимания обобщённого программирования, и это РАБОТАЛО
сейчас честно скажу, я разумно-осознанно (а не механически как раньше) дочитал Александреску лишь до конца третьей главы
и этого вполне достаточно:
списки типов
шаблонные шаблонные параметры шаблонов которые есть только в С++
и два генератора GenScatterHierarchy и GenLinearHierarchy
с этим нехитрым набором (+ ассерты, в т.ч. статические) можно и впрямь перекладывать львиную долю работы на компилятор : ))*/
absolut 29.09.2011 16:38 # 0
niXman 02.10.2011 20:09 # +4
TarasB 29.09.2011 09:45 # −7
Крестошаблоны не предназначались для подобных фишечек, поэтому подобное их использование выглядит как говно.
CPPGovno 29.09.2011 11:38 # +1
Если шаблоны С++ для этого не предназначены, то для чего они предназначены?
Какую вы бы посоветовали замену?
TarasB 29.09.2011 14:57 # +4
Шаблоны в качестве генериков - это нормальное применение.
Частичная специализация - это уже фишка хитрее, её надо использовать только по жёсткой необходимости.
Рекурсивность - вообще не знаю, нафига.
А всякие там факториалы на шаблонах - это уже изъёбы мозга. Просто случайно вышло, что на шаблонах можно и так, если постараться. Только делать так не надо.
В качестве замены я бы посоветовал другие языки, содержащие эти навороты в более читаемом виде.
Govnoeb 29.09.2011 18:44 # +2
во вторых, ты я вижу против compile-time вычислений и compile-time полиморфизма. да?
TarasB 29.09.2011 20:00 # +4
CKrestKrestGovno 29.09.2011 20:02 # +7
gegMOPO4 29.09.2011 20:39 # +1
TarasB 29.09.2011 20:46 # +1
Govnoeb 29.09.2011 21:36 # 0
про compile-time полиморфизм что-нибудь скажете?
TarasB 29.09.2011 21:42 # 0
Вместо полиморфизма периода компиляции предлагаю тупой код на условных операторах и компилятор, умеющий откидывать ненужные ветки.
Govnoeb 29.09.2011 22:03 # 0
пример кода?
TarasB 29.09.2011 22:13 # +3
CPPGovno 29.09.2011 22:59 # 0
TarasB 29.09.2011 23:04 # 0
CPPGovno 30.09.2011 13:15 # 0
http://govnokod.ru/8040
CPPGovno 29.09.2011 23:15 # 0
"Один" класс ведёт себя по разному. Понятно, что это не совсем полиморфизм. Но очень часто именно в таком контексте используют динамический полиморфизм, хотя такого статического здесь достаточно выше крыши.
Плюсы этого подхода :
1)Создаётся объект в стеке, значит быстро, а не в куче. Хотя можно и не в стеке.
2)Используется шаблон, значит компиль будет инлайнить.
Минус:
1)Если понадобится резкой перейти от статического полиморфизма к динамическому - придётся переписывать на виртуальные функции или на истинный статический полиморфизм.
TarasB 30.09.2011 09:26 # −2
void do ()
{
printf("Mega");
if type(this) = Strategy1 then {Strategy1.do} else {Strategy2.do};
}
лишние ветвления на сравнении типа с чем-то должны быть обрублены компилятором, если тип известен. Если нет - то при выполнении.
CPPGovno 30.09.2011 11:45 # +2
Мне нравится идея, но нужно как то не так.
А если пользователь передаст стратегию Strategy3, то вызовется лишь Strategy2.
То что вы сделали - это специализация шаблонов, но при этом не осталось самого шаблона.
То есть в вашем коде нельзя добавить новую стратегию, не изменив "полиморфный" класс.
Это чревато такими ошибками. А именно ошибками забыть добавить новую стратегию Strategy3 во все методы класса MegaClass (или хотя бы во все методы класса MegaClass добавили, а в один забыли добавить).
Да и как-то многословно пока... Вам нужно как-то это исправить.
TarasB 30.09.2011 11:56 # 0
Короче, опять приходим к виртуальным функциям, только с требованием для каждого наследника создавать свой экземпляр функции родителя, в которой вместо указательного вызова сидит простой.
А многословность вообще не проблема.
CPPGovno 30.09.2011 12:13 # 0
Как видно, без лишних слов в С++ получаем статический "полиморфизм" без виртуальных функций, не тратя время на вызов по указателю. Вам всегда же не нравились вызовы по указателю... Даже помню по этому вопросу целую тему на 100+ комментов.
TarasB 30.09.2011 12:16 # +1
В С++ же мы видим лишние слова и лишние угловые скобочки.
CPPGovno 30.09.2011 12:26 # +5
Функции уже не будут виртуальными без вызова по указателю. Ваш, КО.
absolut 30.09.2011 12:41 # 0
Можно вызывать по ссылке
CPPGovno 30.09.2011 12:55 # 0
TarasB 30.09.2011 13:23 # +1
Govnoeb 30.09.2011 13:14 # 0
template<typename _type_, template<typename> class _traits_>
class _string_t {
public:
typedef _type_ value_type;
typedef _traits_<value_type> traits;
typedef _type_ * iterator;
typedef const _type_ * const_iterator;
public:
iterator begin() { return nullptr; }
const_iterator begin() const { return nullptr; }
iterator end() { return nullptr; }
const_iterator end() const { return nullptr; }
/* ... */
};
template<typename _type_>
struct string_traits {
/* .... */
static bool less(const _type_ <, const _type_ &rt) { return lt < rt; }
static bool equal(const _type_ <, const _type_ &rt) { return lt == rt; }
};
template<typename _type_, template<typename> class _traits_>
inline bool operator<(const _string_t<_type_, _traits_> &ls, const _string_t<_type_, _traits_> &rs)
{
typedef _string_t<_type_, _traits_> string_t;
typedef typename string_t::traits traits;
/* if lengths do not equal, ret immediately */
const bool equal_length = std::distance(ls.begin(), ls.end()) == std::distance(rs.begin(), rs.end());
if(!equal_length)
return std::distance(ls.begin(), ls.end()) < std::distance(rs.begin(), rs.end());
string_t::const_iterator ls_it = ls.begin();
string_t::const_iterator rs_it = rs.begin();
/* lengths of strings are equal -> no need to check for 'rs_begin != rs.end()' */
while(ls_it != ls.end() && traits::equal(*ls_it, *rs_begin))
++ls_it, ++rs_it;
return (ls_it != ls.end())? traits::less(*ls_it, *rs_it): false;
}
TarasB 30.09.2011 13:33 # 0
func "<"(l,r: _type_): boolean
{
if _type_ = _string_t<_type_,_traits_> then
{
ну ты понел
} else {
return Standard."<"(l,r);
};
}
}
В такой код, правда, будет трудно добавить ещё частный случай. Тогда - вирт.функции. Которые раскрываются через перегрузку без указателей.
Govnoeb 01.10.2011 18:01 # 0
это не есть главное. главное - что отделена логика от данных
В такой код, правда, будет трудно добавить ещё частный случай. Тогда - вирт.функции. Которые раскрываются через перегрузку без указателей.
паттерн визитор чтоле? впрочем там все-равно один вирт. вызов будет полюбому
Govnoeb 01.10.2011 18:07 # −2
gegMOPO4 30.09.2011 14:11 # +2
Тупой код на условных операторах невозможен из-за несовместимости типов и требования эффективности.
TarasB 30.09.2011 18:23 # 0
Ну и пусть повиснет. Результат будет получен за то же время. Ну и понятно, эта фича должна быть отрубаемой.
gegMOPO4 30.09.2011 18:46 # +2
Кроме того, есть такая штука, как кросскомпиляция.
TarasB 30.09.2011 20:52 # 0
Ну и надо ещё, чтобы при компиляции в окошечке отображалось что-то типа "вычисление значения f(2, 5)..."
gegMOPO4 01.10.2011 16:16 # +5
TarasB 02.10.2011 00:01 # 0
CPPGovno 02.10.2011 01:53 # +1
TarasB 02.10.2011 11:41 # +1
CPPGovno 02.10.2011 16:18 # −3
gegMOPO4 02.10.2011 16:09 # +4
bugmenot 01.10.2011 17:57 # +5
CPPGovno 01.10.2011 18:40 # +2
niXman 02.10.2011 20:13 # 0
тупой кодер == тупой код. параллель не находите?
absolut 02.10.2011 20:28 # 0
Независимо от кодера.
niXman 02.10.2011 20:30 # 0
niXman 02.10.2011 21:00 # 0
1:
что можно сказать о кодере написавшем такое?
2:
http://liveworkspace.org/code/e2367a190546ec68012040bff9289c8f
ну или такое?
bugmenot 02.10.2011 21:07 # 0
niXman 02.10.2011 21:08 # 0
bugmenot 02.10.2011 21:09 # 0
absolut 02.10.2011 21:09 # 0
niXman 02.10.2011 21:11 # 0
SmackMyBitchUp 02.10.2011 20:37 # +1
niXman 02.10.2011 21:01 # 0
absolut 02.10.2011 21:10 # 0
TarasB 02.10.2011 21:08 # +5
niXman 02.10.2011 21:10 # 0
CPPGovno 02.10.2011 21:17 # 0
Ты все-таки зарегался на говнокоде?
roskomgovno 07.06.2018 21:07 # 0
Это был нахрюк на шаблоны сейчас, да?
syoma 07.06.2018 21:46 # −1
ASMOZDOT 08.06.2018 08:33 # 0
g0cTb 07.06.2018 08:38 # 0
roskomgovno 07.06.2018 20:30 # 0
guest8 07.06.2018 20:41 # −999
ASMOZDOT 08.06.2018 08:39 # 0
guest8 07.06.2018 20:42 # −999
roskomgovno 07.06.2018 20:45 # 0
Лабрадор
ASMOZDOT 08.06.2018 08:35 # 0
guest8 08.06.2018 13:23 # −999
syoma 07.06.2018 20:50 # 0
roskomgovno 07.06.2018 20:51 # 0
--а, и так и так говорят
guest8 07.06.2018 21:00 # −999
roskomgovno 07.06.2018 21:01 # 0
C от C++
И github от gitlabs
guest8 07.06.2018 21:11 # −999
roskomgovno 07.06.2018 21:12 # 0
syoma 07.06.2018 21:45 # 0
roskomgovno 07.06.2018 21:58 # 0
Ну, наверное лет 15 уже не видал как минимум
guest8 07.06.2018 21:56 # −999
roskomgovno 07.06.2018 21:57 # 0
guest8 07.06.2018 21:59 # −999
guest8 07.06.2018 22:02 # −999
ASMOZDOT 08.06.2018 08:38 # 0
g0cTb 08.06.2018 11:46 # 0
guest8 08.06.2018 13:21 # −999
gegMOPO4 29.09.2011 19:31 # 0
guest 29.09.2011 23:41 # 0
CPPGovno 30.09.2011 00:17 # −1
guest 30.09.2011 00:24 # 0
niXman 02.10.2011 20:11 # −3
TarasB 02.10.2011 21:07 # +3
SmackMyBitchUp 02.10.2011 21:34 # 0
ASMOZDOT 08.06.2018 08:40 # 0
ctm 29.09.2011 13:32 # 0
TarasB 29.09.2011 14:58 # 0
666_N33D135 04.06.2018 15:17 # 0
Govnoeb 29.09.2011 09:56 # +7
касательно Пети, он должен писать соответственно кодинг стандартам, принятым в коллективе. об этих самых стандартах нужно ессно узнавать при приёме на работу
Если алгоритм написан верно, и Каму-то непонятен код, то
проблема в том что человек просто плохо образован в плане программирования.
неверно конечно. нарушается принцип КИСС, да и тех, кто будет твой гениальный код поддерживать надо тоже думать, хоть иногда
далее, тебя взяли в контору, где цэпэпэ с шаблонами, но с шаблонами, как я понял, ты до этого работал мало. лол или хуита?
Nemoden 29.09.2011 10:09 # +4
Тернарные операторы очень сложные, ага.
Однозначно сказать мудак ли Петя - невозможно. Выкладывай говнокоды Пети и мы посмотрим уже.
CPPGovno 29.09.2011 11:37 # −3
Nemoden 29.09.2011 13:53 # +5
Если "говнокод" Пети - "коммерческая тайна", вопросов нет.
roman-kashitsyn 29.09.2011 11:56 # +3
gegMOPO4 29.09.2011 12:10 # 0
roman-kashitsyn 29.09.2011 12:24 # +3
gegMOPO4 29.09.2011 12:53 # 0
sayidandrtfm 29.09.2011 10:44 # +19
1) Некий абстрактный Петя-программист паттерно-Андреску-осилятор, с приподнятым ЧСВ, пишет некий абстрактный код;
2) Некий приёмщик кода, предъявивший Пете по хреноватой читабельности абстрактного кода оного;
3) Используя некую абстрактную методологию оценки абстрактного кода, нужно получить очень даже конкретный ответ: Петя - мудаг, пишет так, что хер сам потом поймёт не без пол-литры крепкого чая или ниосилятору приёмщику кода нужно бы сходить на ... повышение ЧСВ - квалификации?
Тщательно изучив все исходные данные, получаем закономерный ответ на это всё:
ГДЕ КОД ПЕТИ, БЛЕАТЬ!?
absolut 29.09.2011 10:55 # +11
Teddy_Brown 29.09.2011 11:39 # 0
CPPGovno 29.09.2011 11:35 # −3
absolut 29.09.2011 11:40 # +3
Lure Of Chaos 29.09.2011 13:23 # 0
absolut 29.09.2011 14:07 # 0
Teddy_Brown 29.09.2011 11:41 # 0
Govnoeb 29.09.2011 12:40 # +8
absolut 29.09.2011 13:12 # +8
Teddy_Brown 29.09.2011 13:13 # +3
Lure Of Chaos 29.09.2011 13:24 # +4
-- Петя...
-- ой, прости, брат!
TarasB 29.09.2011 15:00 # +7
gegMOPO4 29.09.2011 11:44 # +6
CPPGovno 29.09.2011 11:46 # −5
Teddy_Brown 29.09.2011 11:46 # +2
Teddy_Brown 29.09.2011 11:54 # +3
1. Архитектура приложения должна быть подробно и качественно задокуметирована.
2. code conventions - псалтырь кодера в составе команды.
3. Не документируешь !качественно! свой код - пидарас по-умолчанию.
Если хотя бы эти требования выполняются - Петя может писать как ему угодно и всё будет всем понятно.
ИМХО.
i-- 29.09.2011 12:00 # +10
roman-kashitsyn 29.09.2011 12:23 # +3
i-- 29.09.2011 12:41 # 0
Простота кода во многом зависит от его оформления, отсутствия "велосипедов", человеческого именования.
Иными словами, простой код - это форма, а не содержание.
roman-kashitsyn 29.09.2011 12:49 # 0
Я тоже верю в то, что любую задачу можно повернуть так, что её решение будет выглядеть просто. Однако сделать это не всегда получается. :(
Govnoeb 29.09.2011 12:42 # +4
roman-kashitsyn 29.09.2011 12:43 # 0
CPPGovno 29.09.2011 12:01 # −1
Teddy_Brown 29.09.2011 12:07 # +3
gegMOPO4 29.09.2011 12:09 # +5
CPPGovno 29.09.2011 12:14 # +1
Жду конца споров тимлида VS Петя с пачкой попкорна.
Teddy_Brown 29.09.2011 12:20 # +5
P. S.
Передай привет Петюне.
CPPGovno 29.09.2011 12:25 # −4
Teddy_Brown 29.09.2011 12:27 # +8
Я даже согласен с его переходом на личности и оскорбления. Мы все здесь это заслужили.
Govnoeb 29.09.2011 12:43 # 0
Teddy_Brown 29.09.2011 13:00 # −1
absolut 29.09.2011 13:14 # 0
Teddy_Brown 29.09.2011 13:16 # 0
absolut 29.09.2011 13:27 # +4
roman-kashitsyn 29.09.2011 13:27 # +1
absolut 29.09.2011 13:29 # +1
Teddy_Brown 29.09.2011 14:18 # 0
TarasB 29.09.2011 15:03 # +1
Teddy_Brown 29.09.2011 15:17 # −1
TarasB 29.09.2011 15:30 # +3
roman-kashitsyn 29.09.2011 15:32 # +6
Govnoeb 29.09.2011 12:46 # +4
страшно даже подумать, что случится с Петей если он таки освоит "Современное проектирование на цэпэпэ" до конца
istem 29.09.2011 12:48 # 0
Teddy_Brown 29.09.2011 13:00 # +4
ZX_Spectrum 29.09.2011 12:55 # +1
А Пете передай путевку в пешее эротическое путешествие.
Nemoden 29.09.2011 13:55 # +1
Это он сказал, зная что вы тут сидите?
CKrestKrestGovno 29.09.2011 13:59 # 0
Да, он всегда рубит правду матку несмотря ни на что.
guest8 04.06.2018 16:01 # −999
CPPGovno 29.09.2011 12:29 # +2
Teddy_Brown 29.09.2011 12:32 # 0
CPPGovno 29.09.2011 12:33 # 0
Teddy_Brown 29.09.2011 12:34 # +4
roman-kashitsyn 29.09.2011 12:32 # +2
Teddy_Brown 29.09.2011 12:33 # −1
Nemoden 29.09.2011 13:56 # +8
Что-то мне подсказывает, что "хуй ты угадал" :))))
CKrestKrestGovno 29.09.2011 13:23 # 0
АА <Андрей Александреску> - root of all evil.
Похоже теперь почитатель и последователь Андрейки последует за своим учителем и гуру в затворнические кельи писать на D.
Он сказал, что уедет покорять Москву.
roman-kashitsyn 29.09.2011 13:27 # +6
Театральное?
absolut 29.09.2011 13:27 # +6
Наполеоновские планы
roman-kashitsyn 29.09.2011 13:57 # +1
Наполеон-то как раз покорения Москвы и сдулся...
absolut 29.09.2011 14:04 # +2
istem 29.09.2011 13:57 # +3
absolut 29.09.2011 14:06 # 0
roman-kashitsyn 29.09.2011 14:06 # 0
i-- 29.09.2011 14:55 # +11
roman-kashitsyn 29.09.2011 15:00 # 0
absolut 29.09.2011 15:29 # 0
roskomgovno 07.06.2018 23:26 # 0
ctm 29.09.2011 13:55 # 0
вопрос 2 его начальству: в проекте появляется узкое место в виде "ресурса" Пети. Он может уйти в отпуск, заболеть, решать другие задачи, уволиться, умереть (не дай бог). что будет с проектом?
Как работодатель, я бы либо вообще не связывался бы с Петей, либо дал ему не жизненно важную, но сложную автономную задачу, тем самым зарезав ему возможность какого-либо роста. А с таким подходом к коллегам ему это не грозит в любом случае.
pushkoff 02.11.2011 18:28 # +1
у начальства 2 выхода, либо уволить петю и не мешать ему в росте, либо подсадить пете кучу нубов, которые за год-два станут кучей петь, и будут приносить больше профита и учить нубов.
чего-то мне кажется что второй случай более приемлимый для начальства ибо всеобщая деградация просто невыгодна, особенно в условиях постоянного роста зарплат.
AnimeGovno-_- 02.11.2011 19:32 # −1
Teddy_Brown 29.09.2011 14:22 # −2
Петя - илитарий с ЧСВ > 9000. Даже при его (Пети) больших знаниях и умениях полезность его (Пети) работы для компании не выше, а то и ниже чем у пары-тройки быдлокодеров.
SmackMyBitchUp 29.09.2011 14:35 # 0
а я уж было подумал про ЧСВ речь
TarasB 29.09.2011 15:05 # +1
Вот и весь ответ
Lure Of Chaos 29.09.2011 17:24 # 0
Teddy_Brown 29.09.2011 17:27 # +1
Lure Of Chaos 29.09.2011 17:30 # −1
Teddy_Brown 29.09.2011 18:02 # +1
Тарас предложил выебать его в сраку.
Govnoeb 29.09.2011 18:49 # 0
absolut 29.09.2011 21:21 # +8
TarasB 29.09.2011 19:59 # +10
CKrestKrestGovno 29.09.2011 20:00 # −3
Lure Of Chaos 29.09.2011 20:03 # −3
Teddy_Brown 29.09.2011 16:25 # −4
TheHamstertamer 29.09.2011 18:00 # −5
absolut 29.09.2011 21:22 # −4
bugmenot 29.09.2011 17:56 # −6
Teddy_Brown 29.09.2011 18:03 # +3
bugmenot 29.09.2011 20:10 # 0
Lure Of Chaos 29.09.2011 18:03 # +4
CKrestKrestGovno 29.09.2011 18:34 # 0
Но вот если совершенно серьёзно рассудить, то стоит ли пользоватся всеми этими веерами шаблонов хотя бы для редкого узкого круга задач?
Я лично читаю код Александреску в легкую. Использовать могу все, кроме GenScatterHierarchy и GenLinearHierarchy. Применять их умею, но просто не знаю где и когда их правильно применять пока...
Стоит ли использовать знания, полученнные из книги Андрейки, или лучше их забыть раз и на всегда, а то рискуешь, что тебя просто погонят с работы?
roman-kashitsyn 29.09.2011 18:36 # +3
Потому программирование и искусство, что у программиста должно быть чувство меры. В каждом конкретном случае нужно отдельно решать, стоит оно того или нет.
Teddy_Brown 29.09.2011 18:44 # +4
CKrestKrestGovno 29.09.2011 19:57 # +1
Govnoeb 29.09.2011 18:51 # +11
на баш! срочно!
CKrestKrestGovno 29.09.2011 19:58 # 0
absolut 29.09.2011 21:24 # +7
guest8 07.06.2018 22:52 # −999
istem 29.09.2011 18:50 # +1
absolut 29.09.2011 21:25 # +1
istem 30.09.2011 01:02 # +1
Teddy_Brown 30.09.2011 08:40 # 0
ohlol 06.10.2011 11:24 # +2
3.14159265 02.04.2012 18:29 # 0
roskomgovno 08.06.2018 00:14 # 0
ахахахахаххаха
Desktop 04.06.2018 11:43 # 0
666_N33D135 04.06.2018 15:52 # 0
roskomgovno 07.06.2018 03:58 # 0
Миду уже скучно так писать, и потому он с помощью шаблонов и паттернов создает абстрактные фабрики стратегий которые способны решить любую задачу в три строки. Мид рад, что он не пишет бойлерплейт.
Потом оказывается что гибкость нужна совсем в другом месте и бенефита от нее нет, зато для того, чтобы поменять алгоритм подсчета очков нужно освоить 4 API, каждый из которых состоит из семи интерфейсов и шести классов, документированных на три страницы каждый.
Сеньйор обычно понимает что гибкость это хорошо, но она не дается бесплатно (написать без багов умный код во много раз сложнее, чем написать глупый код, а писать-то хочется без багов) и если у тебя нет уверенности что твоим чудо-фреймвокром будет пользоваться 150 человек, то может быть проще написать 10 строчек по-ковбойски.
Собссно, отсюда и растут все наши питонии.
Так что Петя не виноват, он просто недостаточно еще говна поел
g0cTb 07.06.2018 21:47 # 0
Это как? Который раз слышу в значении, как что-то плохое. Хотя на википедии написано, что это когда технические вопросы решает разработчик, а не менеджер (блять а как по-другому-то?).
roskomgovno 07.06.2018 21:49 # 0
g0cTb 07.06.2018 22:05 # 0
roskomgovno 07.06.2018 22:07 # 0
Все любят выябываться на форумах модными словами из GoF, а потом идут на работу и пишут говно
guest8 07.06.2018 22:28 # −999
roskomgovno 07.06.2018 23:20 # 0
defecate-plusplus 07.06.2018 23:21 # −1
ASMOZDOT 08.06.2018 08:43 # 0
666_N33D135 08.06.2018 12:25 # 0
Норкоман сходит с ума.
Норкомана мучит ломка,
Норкомана ждёт нора.
ASMOZDOT 08.06.2018 14:18 # 0
Норкоману говоря:
"Потерпи, сейчас отпустит,
Не нужна тебе нора".
guest8 08.06.2018 14:45 # −999
guest8 08.06.2018 15:15 # −999
guest8 08.06.2018 18:15 # −999
guest8 08.06.2018 18:15 # −999
666_N33D135 08.06.2018 18:35 # 0
ЗЫ. Ты ритм нарушил, норкоман.
roskomgovno 08.06.2018 20:47 # 0
Писать на стенах туалета,
Увы, мой друг, не мудрено.
Среди говна мы все поэты
Среди поэтов мы -- говно.
Поэт:
Известно каждому: не сразу
Поэт рождается меж нас
Потренируйся с унитазом
Чтоб заслужить признание масс
syoma 08.06.2018 21:33 # 0
Сижу здесь, как фюрер,
А подо мной - коричневые массы.
roskomgovno 08.06.2018 21:38 # 0
https://youtu.be/RPyhyI1bdP4
gEKA6PbCKuu_nemyx 20.12.2021 13:23 # 0
Поэтами умирают.
guest8 09.06.2018 08:59 # −999
guest8 09.06.2018 09:00 # −999
roman-kashitsyn 07.06.2018 23:53 # 0
Я вообще люто-бешено ненавижу шаблоны, о чем уже не раз говорил.
http://govnokod.ru/15505#comment221515
roskomgovno 07.06.2018 23:58 # 0
Просто к написанию современных приложений паттерны имеют примерно такое же отношение, как знание "жи/ши" к написанию Войны и Мира.
Знать их не плохо, но явно недостаточно.
guest8 08.06.2018 00:02 # −999
guest8 08.06.2018 00:08 # −999
guest8 07.06.2018 23:40 # −999
guest8 09.04.2019 11:37 # −999