Leave a comment

Comments 13

zhengxi October 14 2012, 01:51:11 UTC
нужно сделать метод createComment(), тогда хотя он всё равно будет вызываться в 26 местах, но если нужно будет изменить его логику, изменить нужно будет только в 1 месте.

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

Reply

m_a_m_o_n October 14 2012, 11:04:25 UTC
Конечно, разработчик должен понимать бизнес логику проекта.

Вот если в двух разных частях пода делается str.trim().substring(0,1), очень может быть что между этими
двумя кусками кода вообще нет никакой семантической связи.

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

Reply


thinker8086 October 14 2012, 19:16:25 UTC
А это не болезни конкретной Java с её бинсами и её гибернейтом?

Reply

m_a_m_o_n October 14 2012, 19:23:58 UTC
Тут дело не в языке, в RoR тот же ActiveRecord.

Reply

thinker8086 October 14 2012, 21:46:49 UTC
А, понял идею )

Ну во-первых, override метода save конкретного класса в ActiveRecord-фреймворке вполне должен помочь в решении указанной в посте проблемы.

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

Reply

m_a_m_o_n October 16 2012, 21:45:41 UTC
Вот вы говорите что понимаете, и всё равно хотите сделать по плохому ( ... )

Reply


kseleznyov October 20 2012, 20:24:42 UTC
Сначала про "Программа vs Приложение". Приложение - это некоторая штука (аппаратные средства+программа+данные+ что либо ещё), помогающая пользователю решать его конкретные прикладные задачи, не связанные с функционированием ЭВМ. По сути дела, примерно тот же ответ даёт и википедия про прикладное программное обеспечение. Grep, в зависимости от конкретного использования, может быть приложением, а вот NetBeans, или Eclips, или какое-нибудь Delphi - вряд ли. Вообще, эти штуки начинаешь чувствовать и понимать, когда приходится писать документацию по ГОСТ-у. В голове сразу многое на свои места становится.

Reply

m_a_m_o_n October 20 2012, 21:01:00 UTC
Костик, не передёргивай, в самом начале поста я дал определение - что такое программа и что такое приложение.

Reply

kseleznyov October 21 2012, 19:48:09 UTC
А я и не передергиваю. Я просто дал свою трактовку этих терминов - имею же право :)

Reply

m_a_m_o_n October 22 2012, 09:09:41 UTC
Это и называется передёргивать. Когда пишу пост про одно, а ты мне отвечаешь совсем про другое.

Reply


kseleznyov October 20 2012, 20:32:36 UTC
>Для меня самый большой вопрос, если это так очевидно, почему так никто не делает и почему этому нигде не учат?
Так никто не делает, потому что это, действительно, сложно и долго. Да и не все разработчики "потянут". А заказчику, как понимаешь, нужно вчера. Даже пословица-прикол такая есть "Математики делают то, что можно, так, как нужно. а программисты, наоборот, то, что нужно, так, как можно"

Этому нигде не учат, потому что этому невозможно научить, а можно только научиться, причём научиться на достаточно долгой собственной практике.

Reply

m_a_m_o_n October 20 2012, 21:57:05 UTC
Да можно, вот только нужно самому понимать.

Reply

kseleznyov October 21 2012, 19:50:22 UTC
Ну это само собой, что нужно самом понимать :)

Только в добавок нужно понимать, как это лучше преподавать, и кому (вплоть до персоналий) это имеет смысл преподавать. а кому - нет. Ты же прекрасно понимаешь, что на такой высокий уровень требований и подготовки потянут далеко не все студенты, да и не все это объективно надо.

Reply


Leave a comment

Up