|
|
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Постоянно возникает вопрос, как организовать код по некоторым стандартам и правилам: комментирование, название переменных, структуры модулей, разбив функционала на модули. Часть стандартов-правил конечно используется, но хотелось бы двигаться дальше в этом плане. Никто из знакомых программистов сказать толком ничего не может. Если работало несколько человек, то потом все собирается "на коленке". Хотелось бы почитать литературу, с современным подходом и средствами коллективной разработки. Может какую посоветуете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 11:39 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Например, Стив Макконелл "Совершенный код" ( Steve McConnell "Code Complete" ). Если вы ищете руководство по стилю программирования и конструированию ПО, то это книга, я думаю, - то что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 12:20 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
edges7Например, Стив Макконелл "Совершенный код" ( Steve McConnell "Code Complete" ). Если вы ищете руководство по стилю программирования и конструированию ПО, то это книга, я думаю, - то что надо.+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 12:56 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
А сколько человек будет участвовать в одном проекте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 13:11 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
по мойму - одну задачу должен один программист прогать. тогда и вопросов не будет. и не суть важно по каким правилам оформлены комментарии и названия переменных. если алгоритм принципиально корректен, то скорее возникает вопрос правильности постановки задачи и дальнейшего использования результатов. методологическая задача. а не синтаксическая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 13:22 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ban Meодну задачу должен один программист прогать ... работать на этом предприятии и сопровождать пожизнено! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 14:02 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ban Me... и не суть важно по каким правилам оформлены комментарии и названия переменных... Наверное, программисты, которые в дальнейшем займутся сопровождением проги не очень сильно обрадоваются этому факту. Проще и быстрее разобраться в коде, который выполнен в единообразной форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 14:09 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
edges7 Ban Me... и не суть важно по каким правилам оформлены комментарии и названия переменных... Наверное, программисты, которые в дальнейшем займутся сопровождением проги не очень сильно обрадоваются этому факту. Проще и быстрее разобраться в коде, который выполнен в единообразной форме.Предположим, имеется 150 единообразных форм , запросов, отчётов. и таблиц! как вы себе это представляете? :) в чём единообразность должна заключаться? в названии переменных? ха ха ха! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:02 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
ban me!Предположим, имеется 150 единообразных форм , запросов, отчётов. и таблиц! как вы себе это представляете? :) в чём единообразность должна заключаться? в названии переменных? ха ха ха! :)а в чём проблема заключается, не поделитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:05 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
ban me!Предположим, имеется 150 единообразных форм , запросов, отчётов. и таблиц! как вы себе это представляете? :) в чём единообразность должна заключаться? в названии переменных? ха ха ха! :) Ну, в любом языке программирования еще много чего есть, кроме переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:10 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
egorychа в чём проблема заключается, не поделитесь?в методологии определения единообразности, разве не понятно? каждый блок программы по идее уникален, поскольку выполняет свою функцию. своего рода слой, плоскость , через которую рассматриваются остальные блоки, некоторые из которых имеют точки пересечения с рассматриваемым блоком. По большому счёту только точки пересечения и интересны должны быть. Так в чём проблема задокументировать их по методологии. А не рассматривать принцип единообразности уникальных плоскостей. Всё придумано уже очень давно: и тестеры и тех писатели лишние штоле? а то пишут сами не поймут чего: авторкомментирование, название переменных, структуры модулей, разбив функционала на модули.какое? автор не в том направлении ищет причину постоянного возникновения вопросов по организации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:27 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ban Meпо мойму - одну задачу должен один программист прогать. тогда и вопросов не будет. и не суть важно по каким правилам оформлены комментарии и названия переменных. если алгоритм принципиально корректен, то скорее возникает вопрос правильности постановки задачи и дальнейшего использования результатов. методологическая задача. а не синтаксическая. На мой взгляд такой подход принципиально неверен. Многие , с которыми взаимодействовал, придерживались такого же взгляда. Вопрос возникает, например: через год нужно изменить алгоритм добавив в него новый функционал. В том что написано, даже этот самый "кодер" не может разобраться. Получается, что деньги ему зря платили, раз он создал нечитаемый код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:32 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
alex376На мой взгляд такой подход принципиально неверен. Многие , с которыми взаимодействовал, придерживались такого же взгляда. Вопрос возникает, например: через год нужно изменить алгоритм добавив в него новый функционал. В том что написано, даже этот самый "кодер" не может разобраться. Получается, что деньги ему зря платили, раз он создал нечитаемый код.что вы делали в 5 часов дня ровно год назад? за што заплатили кодеру говорите? как за што? вы чо? а работу когда принимали о чём думали? работало же всё, задача была выполнена раз приняли? любой обычный программист легко может для изменения функционала - переписать любой код с нуля, а если не может то он ваще дармоед и работает хуже "того гадкого кодера" . имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:36 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ну, одна сторона проблемы там как раз правильно замечена. Если не применяется XP, то одну задачу должен писать более-менее один человек. Иначе бывают неприятные коллизии, и CVS спасает только от потери кода, но не от потери времени в попытках сделать нормальный diff. Но другое дело, что ключевые слова там - "более-менее". Когда у каждого во владении строго его собственный код - это тоже сильно чревато. Ну и конечно, несмотря на то, что роли поделены - каждый пишет в единообразном стиле. Тогда проблемы вникания в криво написанный код обычно не стоит (за исключением случаев, когда код намеренно криво написан, но это быстро обнаруживается). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:40 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ban Meчто вы делали в 5 часов дня ровно год назад? за што заплатили кодеру говорите? как за што? вы чо? а работу когда принимали о чём думали? работало же всё, задача была выполнена раз приняли? любой обычный программист легко может для изменения функционала - переписать любой код с нуля, а если не может то он ваще дармоед и работает хуже "того гадкого кодера" . имхо. Программист может вообще всё Но это не отменяет того факта, что вникание во вменяемый код происходит за *намного* меньшее время, чем переписывание этого кода с нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 15:42 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ban Me любой обычный программист легко может для изменения функционала - переписать любой код с нуля, а если не может то он ваще дармоед и работает хуже "того гадкого кодера" . имхо. Угу, ярко так себе представил один программист написал программу скажем, за месяц, потом он уволился/уехал/умер. И теперь чтобы добавить в эту программу хотя бы один отчет понадобится... барабанная дробь... один месяц и один день, ведь мы ПЕРЕписываем с нуля, а не ДОписываем. Отличный подход. Предлагаю расширить его и на остальные области, например: Кто такие вообще эти Лагранж, Коши и прочие, к черту их, все теоремы и формулы выводим с нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 16:10 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
MAPA3OTУгу, ярко так себе представил один программист написал программу скажем, за месяц, потом он уволился/уехал/умер. И теперь чтобы добавить в эту программу хотя бы один отчет понадобится... барабанная дробь... один месяц и один день, ведь мы ПЕРЕписываем с нуля, а не ДОписываем. Отличный подход. Предлагаю расширить его и на остальные области, например: Кто такие вообще эти Лагранж, Коши и прочие, к черту их, все теоремы и формулы выводим с нуля.Между прочим всё правильно. Вот к примеру, если в винде выскочила ошибка которая мешает вам программировать - вы што делать-то собираетесь? Исправлят ьошибки функциональность расширять? ну ну. Программирование ради программирования получается. Задача в чём заключается мы вобще про конкретику разговариваем или рассматриваем гипотетические случаи? Ну давайте напишем гипотетическую абсолютно читаемую программу, чтоб каждый прочесть мог и своё дописать. Чтоб каждый понял слёту про что написано а то ведь, чтоб один отчёт добавить это ж всю программу "понять" необходимо . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 16:17 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
alex376Постоянно возникает вопрос, как организовать код по некоторым стандартам и правилам: комментирование, название переменных, структуры модулей, разбив функционала на модули. Спокойно и незатейливо. Этот процесс должен идти снизу, а не сверху: есть потребность - приняли решение - выполняем. Попытка ввести такое сверху.... может, наверное, привести к счастью, но имхо сомнительна. alex376Никто из знакомых программистов сказать толком ничего не может. Если работало несколько человек, то потом все собирается "на коленке". Странные у Вас знакомые. alex376Хотелось бы почитать литературу, с современным подходом и средствами коллективной разработки. Средства коллективной разработки тут менее всего при чем. Лично мне хватило форума, на котором в течение полутора месяцев (в промежутках между основными делами) сотрудники отдела обсуждали и согласовывали подходы. Ban Meпо мойму - одну задачу должен один программист прогать. тогда и вопросов не будет. Ага, точно. Мое начальство тоже так считало, вплоть до августа 98-го года. Тогда грянул кризис, все встали на уши, главный программист застрял в отпуске хрен знает где, и возник вопрос - либо мы срочно делаем несколько вещей, либо теряем одного из двух основных клиентов. Вот тогда они вспомнили, как я говорил "а нас на предыдущей работе учили лазить в код друг другу" The_ShadoWЕсли не применяется XP, то одну задачу должен писать более-менее один человек. Иначе бывают неприятные коллизии Когда "одну задачу пишет один человек", неприятные коллизии бывают намного чаще. Вида "через полгода посмотрели, что же он сделал, и охренели". The_ShadoW, и CVS спасает только от потери кода, но не от потери времени в попытках сделать нормальный diff. Если уж дело дошло до diff-ов, надо пользоваться нормальными инструментами и нормальными технологиями, а не пережитками позапрошлого века. Но сами по себе diff-ы имеют крайне мало отношения к делу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 16:31 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Просветите, что такое diff ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 16:43 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Ban MeМежду прочим всё правильно. Вот к примеру, если в винде выскочила ошибка которая мешает вам программировать - вы што делать-то собираетесь? Исправлят ьошибки функциональность расширять? ну ну. Программирование ради программирования получается. Задача в чём заключается мы вобще про конкретику разговариваем или рассматриваем гипотетические случаи? Ну давайте напишем гипотетическую абсолютно читаемую программу, чтоб каждый прочесть мог и своё дописать. Чтоб каждый понял слёту про что написано а то ведь, чтоб один отчёт добавить это ж всю программу "понять" необходимо . 1) Если у меня выскочила ошибка не важно в какой программе (ОС - ведь тоже программа), то я пойду пинать того, у кого код этой программы - bugreport и т.д. Возвращаясь к Windows, представьте, что вы получаете не патч к ОС, а каждый раз переставляете ее заново, а так по вашему и должно быть. Новая команда, взяла и переписала все заново с нуля. 2) То есть, всякие разные плагины и расширения функциональности - бред? Кстати, а вы хоть раз участвовали в проектах - долгостроях, то есть тех, которые дляться больше года. Состав разработчиков может измениться кардинально, и что делать остальным? 3) Если у меня есть код программы и полное тех описание то я, должен читать программу с листа. Если этого не происходит то одно из следущего: 1) Я дурак 2) программа написана идиотами 3) тех. описание сделано идиотами. И наконец. Представьте себе коллектив разработчиков, есть два варианта: 1) каждый пишет свой кусок не влезая в другие (сферические кони.. так просто не бывает), но даже здесь в итоге куски придется сцеплять и если стиль программирования разный - вы удавитесь. 2) каждый пишет свою задачу или 2-3 человека пишут одну задачу, то есть переодически вносятся правки в разные куски. Если у каждого из программистов - свой стиль, то на выходе имеем кашу вместо кода и затянутые сроки разработки. Хотите пример, допустим мне нравится такой стиль программирования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 16:56 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
MAPA3OTЕсли у меня есть код программы и полное тех описание то я, должен читать программу с листаУ меня тоже есть коды разных программ и описания - однако читать их мне лениво :) Разговор о крупных проектах: есть кусок в котором надо разобраться : поручили вам, а как там получится - тех писатели дураки, или программисты ранее писавшие код , или вы - безразлично. Не можешь сделать, скинь претензию руководителю. Обратно на тебя вешают - работай в другом месте. Всё просто до тупости. И не столь важно ПЕРЕписывать надо или ДОписывать. Можешь - выбирай из этих двух вариантов. Вы походу тоже пример хотите, пожалуста: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 17:22 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Время, уважаемый, время... Если мне сильно надо, то я и после обфускатора код прочитаю, но вот вопрос, сколько времени это займет. Вот для того чтобы не гадить на голову товарищам и придумывают некие спецификации. Если вы возьмете мой пример кода, то если где-то кто-то напишет,что в любом месте кода префикс i - означает integer, а две подряд идущие буквы ch - число не зависимо от его типа. То вы все еще будете хотеть убить автора, но уже чуть меньше, ибо ключ к разгадке у вас есть. Если мы говорим о вашем примере кода, то судя по всему поддерживался принцип - информационно значащие переменны, слова в которых разделены "_", код - не вкусный, но опять-таки понимается легче, чем если бы не было вообще никаких подсказок Заметим, что можно легко различить переменную и метку (не лучший способ, но они хотя бы различаются) check_sum - я понимаю что она означает CheckSum_NotNumeric - я понимаю, что должно происходит в том месте куда я перейду server_block - вот тут - теряюсь в догадках, но узнав специфику скорее всего пойму что это Temporary_Expired - опять таки ясно куда послали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 17:44 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
MAPA3OTЕсли вы возьмете мой пример кода, то если где-то кто-то напишет,что в любом месте кода префикс i - означает integer, а две подряд идущие буквы ch - число не зависимо от его типа. То вы все еще будете хотеть убить автора, но уже чуть меньше, Ошибаетесь, лично я буду хотеть убить автора куда больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 17:49 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarer Ошибаетесь, лично я буду хотеть убить автора куда больше. Экий вы кровожадный, чтобы вы не искали этого беднягу, скажу, что код придуман мной :) Но все-таки неужели тупого, но доброго (хоть какие-то ключи оставил) человека, вы будете хотеть убить больше, чем просто тупого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 17:56 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
MAPA3OTЭкий вы кровожадный, чтобы вы не искали этого беднягу, скажу, что код придуман мной :) Но все-таки неужели тупого, но доброго (хоть какие-то ключи оставил) человека, вы будете хотеть убить больше, чем просто тупого? Безусловно. Уж лучше я буду думать об авторе, что он просто называл переменные по-немецки, чем что он сознательно делал такой ужас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 18:22 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Как говориться, на вкус и цвет, все фломастеры - разные. Честно говоря, поимел некое время назад много секеса с названиями переменных, так что теперь даже за то, что человек назвал Int-овую переменную/функцию ia, а не просто a, уже готов говорить спасибо. Ну а уж за грамотную спецификацию - огромное спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 18:47 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
На самом деле подобный вопрос давно меня интересует, должен-ли программист быть в какой-то степени перфекционистом ? Ведь понятно, что сам по-себе спагетти код никуда не годиться, но в то-же время у меня часто бывают ситуации, когда мой код мне не нравиться, хотя он вполне читаем (с моей точки зрения), но в то-же время я ведь вижу, что можно что-то улучшить - тут выделить в отдельный метод, тут чуть подправить и переименовать итп. Ведь хочеться-же достигнуть своеобразного грааля программирования - что-бы каждый класс являл собой четкую и ясную сущность, без примеси "подозрительных" с точки зрения его интерфейса методов, каждый метод имел ясное название и делал-бы только то, что написано в его названии и ничего другого, и так далее (не один десяток таких-вот пожеланий) по стопам великих и ужастных Фаулера, Макконнела и прочих компьютерных умов нашего времени. Но ведь у подобного вылизывания есть один недостаток - поглащаемое время, и так сложно иногда определиться, хватит тут рефакторить, или стоит еще немного улучшить ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 19:28 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
StalkerSНа самом деле подобный вопрос давно меня интересует, должен-ли программист быть в какой-то степени перфекционистом ? Боюсь, внятной статистики на этот счет ни у кого нет, поэтому вопрос вкусов. Имхо - да. StalkerSно в то-же время я ведь вижу, что можно что-то улучшить .... Но ведь у подобного вылизывания есть один недостаток - поглащаемое время, Вообще говоря, понятие качества кода во всех его вариациях сводится ровно к противоположному - к экономии времени. Тут прогрессия: если сегодня хорошо поработал, завтра тебе будет легко и просто; если сегодня схалтурил, завтра придется разгребать, послезавтра завалит, а потом и вообще уже никогда ни на что не хватит времени - знай только, вставляй костыли за скрепляй разваливающуюся хрень. Любимое на тему... замени "дом" на "программу" и будет в нашу действительность Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 20:18 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarer StalkerSНа самом деле подобный вопрос давно меня интересует, должен-ли программист быть в какой-то степени перфекционистом ? Боюсь, внятной статистики на этот счет ни у кого нет, поэтому вопрос вкусов. Имхо - да. StalkerSно в то-же время я ведь вижу, что можно что-то улучшить .... Но ведь у подобного вылизывания есть один недостаток - поглащаемое время, Вообще говоря, понятие качества кода во всех его вариациях сводится ровно к противоположному - к экономии времени. Тут прогрессия: если сегодня хорошо поработал, завтра тебе будет легко и просто; если сегодня схалтурил, завтра придется разгребать, послезавтра завалит, а потом и вообще уже никогда ни на что не хватит времени - знай только, вставляй костыли за скрепляй разваливающуюся хрень. Любимое на тему... замени "дом" на "программу" и будет в нашу действительность Могу добавить еще одну сентенцию, от себя - "правильный и неправильный код пишется одинаковое время". "А если нет разницы...." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 21:48 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarer Боюсь, внятной статистики на этот счет ни у кого нет, поэтому вопрос вкусов. Имхо - да. ... Вообще говоря, понятие качества кода во всех его вариациях сводится ровно к противоположному - к экономии времени. все оно конечно так, но ведь совершенство-то недостижимо по определению, да и как известно лучшее враг хорошего, вот и приходиться думать, когда-же остановиться. Надо ловить какой-то призрачный баланс между временем и степенью совершенства (или степенью убожества, когда как ), что довольно непросто Николай1 Могу добавить еще одну сентенцию, от себя - "правильный и неправильный код пишется одинаковое время". если-бы это было так, то мы-бы уже давно жили при коммунизме, еда в магазинах была-бы бесплатной, а работать надо было-бы только один час в неделю, да и в этот час нечего особо делать было-бы не надо ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 15:36 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarerКогда "одну задачу пишет один человек", неприятные коллизии бывают намного чаще. Вида "через полгода посмотрели, что же он сделал, и охренели". А слова "более-менее"-то специально выкинули? Равно как и предложение, где про них особо говорилось. Если программисты у вас раз в полгода в чужой код поглядывают - это клинично. Раз в полдня - еще куда ни шло. Если первый напишет бред, то второй, которому нужен код первого, заглянув туда в очередной раз, ужаснется немедленно. И к концу рабочего дня всё опять примет адекватный вид. softwarerЕсли уж дело дошло до diff-ов, надо пользоваться нормальными инструментами и нормальными технологиями, а не пережитками позапрошлого века. Но сами по себе diff-ы имеют крайне мало отношения к делу. Подскажите мне инструмент и технологию, которая из двух на 50% законченных листингов, описывающих одно и то же (но конечно же, разными способами), соберет один рабочий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 15:42 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
The_ShadoWА слова "более-менее"-то специально выкинули? Выкинул как бессмысленные. Во всяком случае, тонкости смысла идиомы "более-менее один человек" для меня трудноуловимы. Я так понимаю, имеется в виду нечто типа "чаще один, иногда например двое". The_ShadoWПодскажите мне инструмент и технологию, которая из двух на 50% законченных листингов, описывающих одно и то же (но конечно же, разными способами), соберет один рабочий. Лом стальной, длина 1200мм. Применяется сначала к головам разработчиков (которые независимо делают одно и то же), а потом к анусу руководителя проектов (который им это сказал). Ну или наоборот, как удобнее. Если же разработчики делают не одно и то же, а разные вещи в одном файле, все тривиально. Сначала с помощью лома проводится внушение тому, кто хочет применять diff, потом учим разработчиков правильной технологии использования любого visual merge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 16:10 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
StalkerSвсе оно конечно так, но ведь совершенство-то недостижимо по определению, да и как известно лучшее враг хорошего, вот и приходиться думать, когда-же остановиться. Не знаю, не знаю. Это утверждение и последующие исходят из предположения, что "пишем плохо, надо улучшать". А я предпочитаю сразу писать хорошо :) Конечно, через какое-то время можешь осознать ошибки, набрать практику применения или увидеть новую идею - ну так берешь и улучшаешь. StalkerS Николай1 Могу добавить еще одну сентенцию, от себя - "правильный и неправильный код пишется одинаковое время". если-бы это было так, то мы-бы уже давно жили при коммунизме, ..... Ошибаетесь. Во всяком случае, я куда более согласен с Николаем. Плохой код пишут не потому, что быстрее (хотя этим чаще всего оправдываются), а потому что для этого не требуется думать. Реально плохой код не сказать что быстрее в момент написания и резко медленнее в плане последующих затрат на исправление. Здесь стоит учесть, что "хороший код" - вовсе не то же самое, что и "код, строго соответствующий выкладкам известного теоретика Х, примененным в самом неподходящем месте самым неудачным образом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 16:33 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarer Не знаю, не знаю. Это утверждение и последующие исходят из предположения, что "пишем плохо, надо улучшать". А я предпочитаю сразу писать хорошо :) Конечно, через какое-то время можешь осознать ошибки, набрать практику применения или увидеть новую идею - ну так берешь и улучшаешь. ну во-первых "хорошо" и "совершенно" - разные веши :) Или вы предпочитаете сразу писать совершенный код ? ;) Все предпочитают сразу писать хорошо. Только не всегда это получается. По мере написания лучше вникаешь в требования, осознаешь свои собственные ошибочные предположения, меняются сами требования. Все это приводит к изменениям. В конце концов даже окинув взглядом готовый класс можно вдруг осознать, что лучше было-бы сделать немного не так. Иногда даже идя по улице вдруг осознаешь какое-нибудь белое пятно, которое ты в упор не видел долгое время. После чего, как вы правильно написали, берешь и улучшаешь. Видишь, что еще можно улучшить и улучшаешь. Потом еще. Потом видишь число на календаре и начинаешь задумываться о недостижимости совершенства :) softwarer Ошибаетесь. Во всяком случае, я куда более согласен с Николаем. Плохой код пишут не потому, что быстрее (хотя этим чаще всего оправдываются), а потому что для этого не требуется думать. Реально плохой код не сказать что быстрее в момент написания хм, вы с Николаем тратите одинаковое время на придумывание имени метода DoSomeStuff() и CalculateTotalBalance() ? Вы с Николаем за пару мгновений выделяете общее из пары похожих методов в отдельное место ? Вы с Николаем в мгновение ока перемещаете методы между классами ? Что-ж, вы с Николаем гении. Я вам завидую. А вот я не гений. Мне, что-бы что-то изменить в коде требуется некоторое время. Что-бы вместо одного здорового метода с уродским названием в левом классе, написать пару методов с ясными именами и вписывающимися в интерфейс своих классов мне тоже требуется время. Иногда оно не очень большое, иногда очень. softwarer резко медленнее в плане последующих затрат на исправление. с этим не поспоришь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 18:44 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
StalkerSну во-первых "хорошо" и "совершенно" - разные веши :) Или вы предпочитаете сразу писать совершенный код ? Разные. Признаться, не очень представляю себе "совершенный код" с практической точки зрения. Если считать, что это код, к которому трудно предъявить обоснованные претензии "что улучшить", то в моем понимании хороший код и совершенный станут примерно одним и тем же :) StalkerSВсе предпочитают сразу писать хорошо. Только не всегда это получается. По мере написания лучше вникаешь в требования, осознаешь свои собственные ошибочные предположения, меняются сами требования. Все это приводит к изменениям. Именно. Можно и нужно менять по ходу, и заметных затрат времени это не требует. StalkerSхм, вы с Николаем тратите одинаковое время на придумывание имени метода DoSomeStuff() и CalculateTotalBalance() ? Не знаю как Николай, но в общем-то да. Более того, я абсолютно уверен в том, что если решение хорошо продумано, каждый участвующий в нем объект тривиально именуется. Затруднения в придумывании имени (а также желание иметь анонимные объекты, что возможно в некоторых языках) с моей точки зрения означают ровно одно: решение не продумано, программист не совсем понимает, что будет делать объект и зачем, поэтому и название под вопросом. StalkerS Вы с Николаем за пару мгновений выделяете общее из пары похожих методов в отдельное место ? Лично я, собираясь написать несколько строк, и вспоминая, что "похожее я уже писал", не испытываю проблем с тем, чтобы вместо прискорбно типичного Ctrl-C Ctrl-V выделить метод. И времени на это тратится.... ну вот честно, по сравнению например с написанием хорошего набора юнит-тестов к тому же коду о таких тратах и говорить-то бредово. А хороший код, кстати, существенно экономит время на юнит-тесты :) StalkerSМне, что-бы что-то изменить в коде требуется некоторое время. Что-бы вместо одного здорового метода с уродским названием в левом классе, написать пару методов с ясными именами и вписывающимися в интерфейс своих классов мне тоже требуется время. Иногда оно не очень большое, иногда очень. Хм. Скажем так, по моим представлениям работы пальцами здесь секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 19:16 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarer Именно. Можно и нужно менять по ходу, и заметных затрат времени это не требует. мне почему-то кажется, что это сильно зависит от того, что конкретно меняется ;) softwarer Более того, я абсолютно уверен в том, что если решение хорошо продумано, каждый участвующий в нем объект тривиально именуется. Затруднения в придумывании имени (а также желание иметь анонимные объекты, что возможно в некоторых языках) с моей точки зрения означают ровно одно: решение не продумано, программист не совсем понимает, что будет делать объект и зачем, поэтому и название под вопросом. угу. А что-бы решение было хорошо продумано, времени-то случаем не надо тратить ? Вы-б еще сказали, что если решение продумано вплоть до названия каждой переменной, то набирание кода не отнимет много времени. Ну да, не отнимет, кто-бы спорил :) softwarer Лично я, собираясь написать несколько строк, и вспоминая, что "похожее я уже писал", не испытываю проблем с тем, чтобы вместо прискорбно типичного Ctrl-C Ctrl-V выделить метод. И времени на это тратится.... ну вот честно, по сравнению например с написанием хорошего набора юнит-тестов к тому же коду о таких тратах и говорить-то бредово. в общем, затраты на рефакторинг у вас пренебрежительно малы. Что-ж, могу вас только поздравить с этим замечательным фактом. Но судя по всему, это не везде так, ибо зачем тогда тому-же Фаулеру вводить в свою книгу подглаву "Уменьшение стоимости рефакторинга" ? softwarer Хм. Скажем так, по моим представлениям работы пальцами здесь секунды. в смысле секунды ? Напечатать в редакторе код ? А думать, в какие классы поместить методы и как они будут выглядеть и называться, будет сам редактор кода ? Мне-б такой редактор ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 21:11 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
StalkerS ... Все предпочитают сразу писать хорошо. Только не всегда это получается. По мере написания лучше вникаешь в требования, осознаешь свои собственные ошибочные предположения, меняются сами требования. Все это приводит к изменениям. В конце концов даже окинув взглядом готовый класс можно вдруг осознать, что лучше было-бы сделать немного не так. ... Видишь, что еще можно улучшить и улучшаешь. Потом еще. Потом видишь число на календаре и начинаешь задумываться о недостижимости совершенства :) К сожалению, это горькая правда. Написать все верно и с первого раза довольно проблематично. Да, наверное, это просто невозможно. Если бы все сразу всё правильно проектировали, писали совершенный код, то тогда просто не существовало бы такого понятия, как "рефакторинг". И тогда бы ни Макконнелы, ни Фаулеры не издавали бы свои замечательные руководства, не издавалась бы литература по шаблонам проектирования. P.S. Да и это было бы просто скучно. :) Но это вовсе не означает, что не нужно стремиться к совершенству. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2008, 07:35 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
StalkerSмне почему-то кажется, что это сильно зависит от того, что конкретно меняется ;) Безусловно. Я говорю о случае "пишешь хороший код и по ходу дела соображаешь, что пару помарок таки допустил". StalkerSугу. А что-бы решение было хорошо продумано, времени-то случаем не надо тратить ? Надо. И что самое удивительное - примерно столько же, сколько нужно, чтобы решение было плохо продумано. Разница при этом в том, работает ли мозг как должно или вхолостую. StalkerSв общем, затраты на рефакторинг у вас пренебрежительно малы. Уточню: на рефакторинг "прямо по ходу создания", о котором мы и говорим в смысле "совершенствовать можно до бесконечности". Разумеется, со временем меняются требования, появляются новые задачи и новые модули, появляется новый взгляд на систему - это уже порой требует рефакторинга вплоть до "все переписать". StalkerSв смысле секунды ? Напечатать в редакторе код ? А думать, в какие классы поместить методы и как они будут выглядеть и называться, будет сам редактор кода ? Мне-б такой редактор ;) Не понимаю я Вас, честно. Если я хочу разбить на части большую процедуру НарисоватьЧеловечка, у меня как-то не возникает вопроса с названиями процедур НарисоватьРуку, НарисоватьНогу и ГдеТоЗдесьДолжнаБытьГолова. Ну максимум сходить на мультитран за английским термином. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2008, 09:58 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarer Безусловно. Я говорю о случае "пишешь хороший код и по ходу дела соображаешь, что пару помарок таки допустил". а если помарка большая ? Например осознал, что иерархия классов неверная ? Вы это тоже на пару минут переделаете ? softwarer Надо. И что самое удивительное - примерно столько же, сколько нужно, чтобы решение было плохо продумано. действительно удивительно. Первый раз слышу подобную мысль. Всегда думал, что что-бы сделать что-то хорошее, надо приложить больше сил и времени. Возможно вы имеете ввиду ситуацию, когда решаемая проблема знакома разработчику, и ему действительно не надо напрягаться для создания решения (либо сама задача тривиальна). Действительно, мозг подключать почти не надо, все сделается почти на автомате. Но часто-ли такое происходит ? Имхо нет. Хотя действительно, у кого как ... softwarer Уточню: на рефакторинг "прямо по ходу создания", о котором мы и говорим в смысле "совершенствовать можно до бесконечности". Разумеется, со временем меняются требования, появляются новые задачи и новые модули, появляется новый взгляд на систему - это уже порой требует рефакторинга вплоть до "все переписать". теоретически, "все переписать" может случиться и без изменения требований вообще. Ну поняли, что выбрали кардинально не тот путь. И если есть желание совершенствовать - то ... softwarer Не понимаю я Вас, честно. Если я хочу разбить на части большую процедуру НарисоватьЧеловечка, у меня как-то не возникает вопроса с названиями процедур НарисоватьРуку, НарисоватьНогу и ГдеТоЗдесьДолжнаБытьГолова. Ну максимум сходить на мультитран за английским термином. а если взять что-нибудь посложнее человечка ? Например моделирование полета сверхзвукового истребителя ? Тоже никаких вопросов не возникнет ? Боюсь сказать банальную вешь, но при программировании приходиться принимать массу решений буквально на каждом шаге (собственно как и в любой инженерной науке, по сути программисты те-же конструктора истребителей или автомобилей). Если вы хотите, что-бы ваш истребитель быстро летал, метко стрелял и не разваливался в воздухе - будьте добры внимательно подумать над его конструкцией, а если в ходе проектирования выяснился промах - что-то в нем переделать. Каким образом это может занять одинаковое время с проектированием чуда техники, у которого отвалятся крылья при попытке пилота завести двигатель ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2008, 18:15 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
softwarerВыкинул как бессмысленные. Во всяком случае, тонкости смысла идиомы "более-менее один человек" для меня трудноуловимы. Я так понимаю, имеется в виду нечто типа "чаще один, иногда например двое". Имеется в виду один (1) автор кода и несколько (1-...) человек, которые не являются авторами (т.е. сами этот код не пишут\не дописывают) однако смотрят туда либо по долгу своей работы, когда им для своей части нужен код автора, либо просто ради интереса заглядывают. softwarerЕсли же разработчики делают не одно и то же, а разные вещи в одном файле, все тривиально. Сначала с помощью лома проводится внушение тому, кто хочет применять diff, потом учим разработчиков правильной технологии использования любого visual merge. Смысл этой "правильной технологии" основывается на всё том же банальном diff, однако с более крутым внешним представлением. Когда я писал про "diff", я имел в виду сам принцип. А не собственно программу музейной древности с консольным выводом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2008, 08:34 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Фсё уже придумано до вас http://java.sun.com/docs/codeconv/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2008, 12:38 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
StalkerSа если помарка большая ? Например осознал, что иерархия классов неверная ? Мм.. а это еще входит в "пишешь хороший код"? StalkerSа если взять что-нибудь посложнее человечка ? Например моделирование полета сверхзвукового истребителя ? Тоже никаких вопросов не возникнет ? Если я плотно работаю с моделированием полетов, то в чем их принципиальное отличие от человечка? StalkerSЕсли вы хотите, что-бы ваш истребитель быстро летал, метко стрелял и не разваливался в воздухе - будьте добры внимательно подумать над его конструкцией, а если в ходе проектирования выяснился промах - что-то в нем переделать. Каким образом это может занять одинаковое время с проектированием чуда техники, у которого отвалятся крылья при попытке пилота завести двигатель ? Очень простым. Процесс "проектирования чуда техники" приводит к тому, что крылья у него отваливаются гораздо раньше, еще когда двигатели не смонтированы. Их кое-как прилепляют жевательной резинкой, монтируют двигатели и обнаруживают хвостовое оперение на носу. Переносят - оказывается, оно так поддерживало крылья, и теперь те снова отвалились. В итоге до момента первого запуска двигателей проходит нисколько не меньше времени, скорее наоборот. Ну а качество результата... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2008, 13:17 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
Для тех, кто до сих пор верит, что getWorkTime(плохой_код) < getWorkTime(хороший_код): 1) Во-первых, собственно написание кода всегда как минимум неявно разделено на "написание" и "проектирование". Иногда разделено явно, но в массе случаев деление идет не далее головы программиста. Однако оно всегда присутствует. 2) Хороший_код требует N времени на проектирование. Плохой код требует 0 времени на проектирование, но X > N времени на "доработку напильником". 3) Под словами "написали <хороший\плохой> код" следует понимать "написали код, и он работает как надо". А вовсе не "написали код, а теперь поехали тестировать". В последнем случае действительно на формальное написание плохого_кода уйдет меньше времени, однако еще будет далеко не нулевой период от момента "код написан" до момента "код работает как надо". И в итоге подход "написать как выйдет, а потом поправить" всегда и везде длинее подхода "обдумать и написать максимально хорошо". Разумеется, когда программист не шибко хорошо знаком с предметной областью задачи, либо с применяемыми инструментами (учится/осваивается/врубается в проблему) - писать "сразу хорошо" едва ли выйдет. Однако к этому нужно стремиться, и это вовсе не идеал в бесконечности, а вполне нормальный рабочий подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 11:44 |
|
||
|
Стандартизация кода и общий процесс разработки приложений
|
|||
|---|---|---|---|
|
#18+
edges7 StalkerS ... Все предпочитают сразу писать хорошо. Только не всегда это получается. По мере написания лучше вникаешь в требования, осознаешь свои собственные ошибочные предположения, меняются сами требования. Все это приводит к изменениям. В конце концов даже окинув взглядом готовый класс можно вдруг осознать, что лучше было-бы сделать немного не так. ... Видишь, что еще можно улучшить и улучшаешь. Потом еще. Потом видишь число на календаре и начинаешь задумываться о недостижимости совершенства :) К сожалению, это горькая правда. Написать все верно и с первого раза довольно проблематично. Да, наверное, это просто невозможно. Если бы все сразу всё правильно проектировали, писали совершенный код, то тогда просто не существовало бы такого понятия, как "рефакторинг". И тогда бы ни Макконнелы, ни Фаулеры не издавали бы свои замечательные руководства, не издавалась бы литература по шаблонам проектирования. P.S. Да и это было бы просто скучно. :) Но это вовсе не означает, что не нужно стремиться к совершенству. Надо писать такой код, который легко поддается рефакторингу. Не надо заранее гадать - будет то, что я сейчас пишу отдельным классом-методом или нет. Если код выделяется в отдельный логический блок, то надо его выделить в самый простой, впроть до { } только надо постараться сделать его отторгаемым. Потом, если этот код понадобиться повторить, то можно будет его "отторгнуть" и куда-нибудь приспособить (в класс, метод, библиотеку). Это, в общем, не долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 00:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1345345]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 199ms |
| total: | 499ms |

| 0 / 0 |
