?

Log in

No account? Create an account
November 2016   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
cartoon

Читай код

Posted on 2009.05.03 at 16:01

Comments:


Денис Бесков
beskov at 2009-05-03 16:53 (UTC) (Link)
1. интересно, насколько можно научиться быстрому восстановлению логики работы кода, если в программе плохо соблюдаются (отсутствуют) низкоуровневые принципы устройства кода и стандарты кодирования?

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

но на обучение через рефакторинг обычно нет времени, поэтому вопрос про 1 остаётся.
Gaperton
gaperton at 2009-05-03 17:15 (UTC) (Link)
1. интересно, насколько можно научиться быстрому восстановлению логики работы кода, если в программе плохо соблюдаются (отсутствуют) низкоуровневые принципы устройства кода и стандарты кодирования?

Да какая разница? Мало-ли, кто какого мнения о ваших принципах устройства кода? Стандарты кодирования, кстати, исправить проще всего. Есть тулы, которые делают это автоматически.

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

Это очень странная точка зрения. До чрезвычайности. В соответствии с теми принципами, которым учили меня - мозг должен включится ДО того, как начинаешь что-то менять, а не после и не в процессе. Фаулер, очевидно, не работал у нас в CQG - ему бы очень хорошо ввалили за такие методы изучения системы.

Кроме того, мне просто до чрезвычайности интересно, как Фаулер в процессе рефакторинга поймет, почему были выбраны те или иные решения, скажем, в подсистеме хранения котировок в CQG. Неужто "рефакторинг", который суть бездумное эквивалентное преобразования растусовки методов по классам, ему подскажет, что котировки до сих пор хранятся по одному файлу на день потому, что [historical reason]в 91 году диски были маленькие, и на диск помещалось всего порядка 4-7 файлов, которые надо было циклически удалять [/historical reason]?

И зачем интересно это делать в процессе рефакторинга, если информация об этом лежит в комментариях к коммитам и в базе данных фич/дефектов в явном виде, а если нет - то можно просто спросить людей, и они скажут?
ex_alexeych at 2009-05-03 18:59 (UTC) (Link)
Относительно первого: Попробуйте без исходного кода, после этого стандарты кодирования вас больше волновать не будут =)))) Можно ещё в качестве тренировки искать баги по корке для чужого проекта, сие очень хорошо развивает чувство кода не как синтаксического артефакта, но как живой системы.
Енотинька
raccoon at 2009-05-04 12:27 (UTC) (Link)
Поддержу предыдущего оратора.

Кроме необходимости введения в курс дела новичков, иногда в жизни случаются такие нестандартные ситуации, когда - не дай Бог - в компании предстоит:

а. Локализация. Не тот убогий перевод ресурсных файлов на чужой язык с последующим тестированием, а переделка вполне себе промышленной системы, разнообразный код которой написан на четырех-пяти языках, и черт там ногу сломит, где, в какой именно функции реализованы вычисления вооот этого вот расчетного параметра, который "у них" измеряется в фунтах на квадратный дюйм, а у нас - в паскалях...
Я помню, как я чертыхалась, связавшись с одной такой локализацией в сжатый срок. Низкоуровневые принципы устройства кода и стандарты кодирования там отсутствовали напрочь. И читать весь код приходилось мне. Правда, в отсутствии консультанта, который мог бы подсказать мне, куда надо было смотреть (это препятствие - следствие корпоративного идиотизма, а не чьей-то извращенной и злой воли).

b. Покупка компании или части ее акций другой компанией, а также разнообразные "слияния и поглощения", весьма модные в наши времена. Аудит, анализ кода, рефакторинг. За всю свою историю жизни в IT я четырежды переживала такой бедлам. Наученная печальным опытом, на предпоследнем месте работы начала процесс документирования системной архитектуры "с самого начала". И как в воду глядела: ходят слухи, что недалек тот день, когда две компании, ведущие разработки в смежных областях, сольются.

c. Наконец, "это просто удобно". Особенно - если мы пишем не систему для автоматизации бизнес-процессов компании "Unique International", а вполне себе коробочный продукт, а еще лучше - систему, из которой при некоторой "доработке напильником" может получиться система, скажем, следящая за действиями сотрудников корпорации в Интернете, а может - система, собирающая статистику для контекстной рекламы; и две системы, имеющие общее архитектурное ядро, разделятся на два самостоятельных проекта, каждый из которых живет своей собственной внутренней жизнью, но тем не менее обязан поддерживать совместимость с "партнером", у которого существуют свои собственные стратегические задачи. У Microsoft, кстати, существовала в давние времена похожая проблема, когда они вели совместные разработки с Sybase (как всем известно, MS SQL Server изначально - это всего лишь клон Sybase SQL Server, и до 4-ой с какой-то точкой версии MS SQL Server - если мне не изменяет память, то до 4.9 - Microsoft и Sybase SQL Server имели очень много общего кода и согласовывали друг с другом все вносимые в этот код изменения; полный доступ к собственному коду, разумеется, ни одна из конкурирующих компаний своему партнеру не предоставляла).
=========================================================
d. Разумеется, любое документирование системной архитектуры, в соответствии с любыми выбранными стандартами, не отменяет необходимости включать голову и читать код.

Я думаю, что beskov как раз говорит не об отмене данной необходимости, а лишь о ее облегчении.
(Deleted comment)
Денис Бесков
beskov at 2009-05-04 21:47 (UTC) (Link)
Почему же публикуют и переводят Фаулера, а не Балина или тексты студентов 4-го курса?
Gaperton
gaperton at 2009-05-04 22:26 (UTC) (Link)
Бесков, ты для начала сам что-нибудь придумай, вместо того, чтобы прикрывайся ни в чем не повинным Фаулером. Фаулер не имеет ни к твоим словам, ни и к тебе ровным счетом никакого отношения.

И, кажется, я тебя уже предупреждал насчет переходов на личности? Иди в бан, Бесков.
Alex Chistyakov
alexclear at 2009-05-07 18:48 (UTC) (Link)
Мало ли, кого публикуют.
Люди вон Windows используют столько лет, и ничего.
Previous Entry  Next Entry