forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Классы (http://forum.boolean.name/showthread.php?t=15398)

falcon 01.09.2011 14:29

Ответ: Классы
 
Цитата:

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

Цитата:

.Squid +1, насчёт "убер функций" и т.п., что это проблема самой организации работы и философии.
в зду твою философию)))
Этот этап пройден несколько лет назад. Сейчас с этим кодом можно только работать.
Код УЖЕ написан, и его никто не будет переписывать. Можно сколько угодно говорить о его не совершенстве, но отсутствие венгерской нотации в таком уже написанном коде усложнила бы работу на порядок.

Цитата:

Класс должен
выполнять конкретную задачу
Код с функциями во весь экран - есть зло.
НЕТ идеальных архитектур. НЕТ идеального кода.
Академическое мышление, что чему должно и кто кому чем обязан малоценны в ентерпрайзе. Решение далеко не всегда оказывается самым эффективным, а перерешивать никто и ничего не будет.
Алсо классы и функции выполняют весьма себе определённые задачи. Просто задачи эти весьма объёмны.

Есть такой замечательный дядька - Джоэл.
В его книге о программировании очень не плохо расписана ситуация по поводу совершенства кода:

Пишет программист код. Внезапно у очень многих появляется непреодолимое желание взять и переписать. Начать всё заного, сделать всё чище и лучше. Почему? Да потому что код заполонили всякие костыли, фиксы, да и вообще он стал громозким и запутанным.
Но переписывать такое НЕЛЬЗЯ НИ В КОЕМ СЛУЧАЕ.
почему? Потому что на этот код потрачено много сил и средств. Он уже отлажен и работает. И вся его громозкость - результат фиксов багов, добавления функционала ВНЕЗАПНО потребовавшегося заказчику и т.п.
Именно так ф-ции, классы и решения различных задачь и разростаются со временем.
Создать грамотную архитектуру с нуля не возможно. Так или иначе всегда придётся вносить коректироки.
В данном случае венгерская нотация позволяет максимально эффективно находить деффекты и вносить коректировки.
то что МОГЛИ БЫТЬ маленькие ф-ции, самодокументируемый код, куча однозначных спецификаций и ответственных руководителей - это бесспорно. А ещё каждый обидатель этого форума МОГ БЫ БЫТЬ миллиордером. Все эти "могло бы, должно, обязано" - фигня. Оно уже есть, оно работает и в этом надо разбираться. И венгерская нотация позволяет разбираться быстрее и эффективней.
И каждый раз, когда берёшься за проект, не можешь быть уверен, что он не разрастётся, не зальётся говнокодом и тупыми индускими конструкциями. Потому внесение таких нотационных подсказок весьма не плохое решение.

P.S. соре за объём.. на работе делать нех, пока рабочий девайс не прокачают...

Mr_F_ 01.09.2011 14:37

Ответ: Классы
 
Цитата:

Создать грамотную архитектуру с нуля не возможно.
согласен с этим.
Цитата:

Начать всё заного, сделать всё чище и лучше. Почему? Да потому что код заполонили всякие костыли, фиксы, да и вообще он стал громозким и запутанным.
Но переписывать такое НЕЛЬЗЯ НИ В КОЕМ СЛУЧАЕ.
а с этим нет.
когда я писал свой первый двиг и его заполнили костыли, фиксы и он стал громоздким и запутанным, я написал новый с нуля, и это очень даже окупилось. я просто понял все ошибки прошлого кода и постарался написать без них. я понимаю если проект, использующий код, подходит к концу - тогда можно добавлять костыли, это будет дешевле. в ином случае надо срочно всё переписывать, иначе эксплуатация кода будет каждодневной пыткой.

moka 01.09.2011 14:51

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

А то что академические подходы не выживают в коммерции - с этим согласен. Только дополню: в школе, вас учат, и учитесь вы базируясь разным источникам, но не важнейшему - опыту. А лучший опыт, это коммерческий опыт.
Ты говоришь о проектах, с которыми тебе приходится работать, но они уже есть. Это не оправдание что так нужно теперь делать всё. Двигаться нужно вперёд, а не засиживаться на одном месте.
Да, в твоём случае, венгерская нотация, помогла бы, но это не оправдывает её. Т.к. она помогла бы для разбора ужасного кода. Получается что она применима для ужасного кода, и помогает там.
В хорошем и слаженном коде, таких проблем не возникает.

Другой момент, это "философия" и организация работ. И несмотря на твой комент "в зду..", ты потом как раз затрагиваешь эти моменты:
Цитата:

И вся его громозкость - результат фиксов багов, добавления функционала ВНЕЗАПНО потребовавшегося заказчику и т.п.
Проблема организации проекта. Такого не должно быть. Также, разработка кода с учётом его модульности и возможностей, никак не пострадает от "внезапных запросов", т.к. клиент не попросит писать конкретно вот такие строки, он лишь запросит клёвую фичу, которая потребует лишь дополнительную разработку на уровне бизнес логики, или даже фронт-енда, а это не влияет на сами классы никак, если они разработаны с умом..

Тут уже разговор перетекает в организацию проектов, и лид девелоперов, командную работу..

den 01.09.2011 15:03

Ответ: Классы
 
Цитата:

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

falcon 01.09.2011 15:12

Ответ: Классы
 
Цитата:

а с этим нет.
ну если ты высказался против венгерской нотации как таковой, так не приводи в пример только свои небольшие наработки))
лично я сам свой движок переписывал, переписываю и ещё раз перепишу :D
но это потому, что я никому не обязан сдавать его. И потому что он сравнительно крохотный по объёму.
Когда разрабатываешь продукт для заказчика, и понимаешь что изначально сделал что то не так, придётся допиливать то, что есть. а вот В СЛЕДУЮЩИЙ РАЗ взявшись за такое, ты уже будешь знать как подойти грамотней. Так люди и качаются.
Вот только вне домашней кухни выбрасывать продукт и начинать заного - верх идиотизма.
Цитата:

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

>>Проблема организации проекта.
это ПОФИГ. Ещё раз повторяю - оно УЖЕ организовано.
>>В хорошем и слаженном коде, таких проблем не возникает.
хороший код в энтерпрайзе - утопия.
нельзя заранее знать насколько удачной выйдет огромная система.
в определённый момент она запрасто может "поплыть", и превратиться в кашмар. Венгерская нотация МОЖЕТ пригодится если код свалится в унылое говно, потому отказываться от неё - весьма и весьма самоуверенно.
Цитата:

Такого не должно быть
если они разработаны с умом..
опять эти "должно" и "если".
венгерская нотация просто крутая страховка, на случай если система разработана неудачно. И быть её противником, оче не правильно.

moka 01.09.2011 15:13

Ответ: Классы
 
Цитата:

Сообщение от Den (Сообщение 200831)
в нормально IDE если навести на переменую мышкой, появится подсказка, чем является данная переменная.

Далее можно нажать F12 (почти во всех VS), отправит туда где объявлена переменная, функция, класс и т.п. Также есть удобные инструменты такие как Object Viewer или удобный поиск. Есть функции для глобального переименования переменной (F2 в VS). Авто генерируемая документация о функциях.
Да куча всего. Другое дело тут пойдёт уже речь о более сложных процессах, со всякими темплейтами, рефлекциями и т.п. Там вот уже без знаний и разного рода исследований по коду будет тяжко. Особенно в рефлекции..

falcon 01.09.2011 15:32

Ответ: Классы
 
Я для себя открыл такую крутую штуку как Source Insight :)
но этого всего на самом деле не достаточно.

impersonalis 01.09.2011 15:37

Ответ: Классы
 
*взял попкорн*

NitE 01.09.2011 20:07

Ответ: Классы
 
falcon, так что, не будешь голословным, или пруфа не ждать ?

Проект с несколькими тысячами файлов исходников(минимум 2к) и весом в несколько гигов (минимум 2) на стол !

falcon 01.09.2011 22:08

Ответ: Классы
 
NitE, ам.. ну да, как раз думал, чоб в свободный доступ исходники не выложить :D
ваще-то я NDA подписывал))

могу минимально нарушить, рассказав, что работаю с SIP телефонами компании Avaya (т.е. по сути эти объёмные исходники компилятся в небольшую бинарку, которая крутится под жутко кастрированным и допиленным линухом встроенным в эти самые агрегаты )
но это врядли удовлетворит твоё NitE любопытство.
Можешь засчитать это как слив, но исходники я тебе не предоставлю))

HolyDel 01.09.2011 22:18

Ответ: Классы
 
Цитата:

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

NitE 01.09.2011 22:34

Ответ: Классы
 
falcon, ))) мне не нужны исходники, достаточно будет скриншота с замазанными именами файлов, если надо, и открытым пропертисом где видно коль-во файлов и суммарный вес. И чтоб без читерства !

moka 01.09.2011 22:37

Ответ: Классы
 
NDA.. - он уже его нарушил, так ещё я бы не советовал.

falcon 01.09.2011 22:41

Ответ: Классы
 
Как то это глупо что ли.
Если это чото значит, окей, в понедельник всё будет :)

MoKa
ну блин, это же ТАК ВАЖНО чо..)))
МОЙ рабочий проект ЕСТЕСТВЕННО имеет решающее значение в венгерской нотации))

Mind 04.09.2011 11:50

Ответ: Классы
 
У меня вопрос:
Если в функцию я передаю по ссылке класс, чтобы осуществить линейное преобразование(передвижение),хотя можно было бы обойтись ссылкой на матрицу.Сильно ли я теряю в производительности?


Часовой пояс GMT +4, время: 10:59.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot