|
|
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawsoftwarerОчень легко мне кажется, что не очень. Да запросто. {A} - множество методов, упоминаемых в dfm как значения OnClick и подобных свойств. {B} - множество методов, работающих с объектами DataSet. Множества не должны пересекаться (или по вкусу более сильное условие - например, не должны вызывать друг друга). kmawкак измерить вот это "буттон-клик"-ское решение? Ну например, по байтам екзешника. Бессмысленный вопрос. Dima Tif BisnessObject.WrongPassSeria() ... endif if BisnessObject.WrongPassNumber() ... endif ... Не очень понял, чем именно "очень просто" и какое отношение к нему имеет образец точно негодного кода. Dima TСегодня ты запихал три строчки бизнес-логики в Click(), завтра поправил до 10, послезавтра (рано или поздно) потребуется выполнить эти 10 строк но без привязки к интерфейсу. Поэтому если надо написать 2+ строки, то делаю доп. метод в бизнес-логике и его вызываю из интерфейса. В принципе, на это можно ответить, что никто не мешает в тот момент, когда "послезавтра потребуется" выделить метод и получить тот же результат, не впадая в ересь преждевременной оптимизации. Dima TКак практика показывает (по закону подлости) потребуется именно то что в кнопке прописано Так в чём проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:58 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerДа запросто. {A} - множество методов, упоминаемых в dfm как значения OnClick и подобных свойств. {B} - множество методов, работающих с объектами DataSet. Множества не должны пересекаться (или по вкусу более сильное условие - например, не должны вызывать друг друга). это похоже на результат, на оценку существующей декомпозиции. а меня оценка предстоящего интересует. архитектура - это скелет, на который в ширь наращивается функциональность. и вот тут интересно выбрать путь - вправо/влево ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:07 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawэто похоже на результат, на оценку существующей декомпозиции. а меня оценка предстоящего интересует. Вы просили метрику. Метрика считается по какому-то объекту. Нельзя посчитать метрику по фантазии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:26 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawsoftwarerДа запросто. {A} - множество методов, упоминаемых в dfm как значения OnClick и подобных свойств. {B} - множество методов, работающих с объектами DataSet. Множества не должны пересекаться (или по вкусу более сильное условие - например, не должны вызывать друг друга). это похоже на результат, на оценку существующей декомпозиции. а меня оценка предстоящего интересует. архитектура - это скелет, на который в ширь наращивается функциональность. и вот тут интересно выбрать путь - вправо/влево Из метрик кода на ум приходит Cyclomatic complexity (СС). Считается что если ты чего-то рефакторил и уменьшил эту величину то это круто. Но я не думаю что в твоём вопросе нужно считать СС. Может тема топика - MVC/MVP ? И как правильно их готовить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:41 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. но как этот "критерий" можно выразить формально? Code Metrics в Visual Studio , SonarQube ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 08:32 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
в интерфейсе (особенно в WPF) не должно быть не 1 строчки кода связанной с контекстом данных (моделью представления) а еще лучше, если даже CodeBehind нет и всё сделано на XAML (жаль, что не всегда это возможно =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 12:01 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Roman Mejtesв интерфейсе (особенно в WPF) не должно быть не 1 строчки кода связанной с контекстом данных (моделью представления) а еще лучше, если даже CodeBehind нет и всё сделано на XAML (жаль, что не всегда это возможно =) Про WPF ничего не скажу, не знаю. Если не считать этого - столь глобальные категоричные утверждения просто не имеют шанса быть верными. Это ровно то, про что я говорил выше - обезьянки зазубривают "goto бяка", при этом не понимают и не в состоянии объяснить - почему бяка, а сами при этом пишут так, что лучше бы уж писали с goto. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 12:12 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TЕще один пример забега по граблям из моей практики: вэб-интерфейс на PHP где я успешно скрестил интерфейс с бизнес-логикой. просто симбиоз получился, хрен вырвешь одно из другого. Писал в молодости, а проект живучий оказался, >10 лет прожил и умирать не планирует, и мне сейчас по хорошему надо новый дизайн сделать с современными фишками, а я не могу, надо все с нуля делать. Считаю это правильным, не нужно постоянно допиливать один и тот-же инструмент, даже есть такое мнение, что это вредно. Пока работает - выполняет свои функции. Не устраивает - делаем другой с нуля, а не мучаемся со старым, это-же огромный плюс! booby Даже если с goto лучше, этого ни в коем случае нельзя допустить: ... Написанное далее ниасилил :) Так Вам задачу решить нужно или с кодом возиться? Что важнее? Или знаете как нужно писать промышленный код? Чтобы поддерживали наши дети и внуки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 16:42 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
booby, это вообще про что? Какой-то странный пассаж про goto и имортозамещение. Вобщем оффтопик это. Модератор! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 16:50 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
некоторые принципы можно почитать тут например: https://en.wikipedia.org/wiki/SOLID_(object-oriented_design) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 17:43 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
mayton... Формально это пытался описать Мартин Фаулер. Других фундаментальных трудов по архитектуре я не знаю. ... Полистайте книжки и статьи Фредерика Брукса. Это, м.б. не так формально, и не приведет ни к каким немедленным "паттернам", но фундаментальней найти затруднительно. например: http://www.williamspublishing.com/Books/978-5-8459-1792-8.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 17:59 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциbooby Даже если с goto лучше, этого ни в коем случае нельзя допустить: ... Написанное далее ниасилил :) Так Вам задачу решить нужно или с кодом возиться? Что важнее? Или знаете как нужно писать промышленный код? Чтобы поддерживали наши дети и внуки :) Автор имел ввиду, что написать код это одно, а поддерживать этот код в рабочем состоянии, использовать рефакторинг и прочее, прочее, это совсем другое. И вот тут, всякие GoTo и прочие вещи сильно мешают. Лично, я тоже не вижу в GoTo ни чего страшного, если он крутится где то в чёрном ящике, это не мои проблемы, но еще не было таких задач, где бы он мне действительно был нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 13:50 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, Миром десктопов программирование не ограничивается. Есть еще куча разных ASM`ом для разнообразнейших железяк. Что там про goto говорили?-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 14:02 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
booby Полистайте книжки и статьи Фредерика Брукса. Это, м.б. не так формально, и не приведет ни к каким немедленным "паттернам", но фундаментальней найти затруднительно. например: http://www.williamspublishing.com/Books/978-5-8459-1792-8.html Спасибо. Почитаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 14:54 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Roman MejtesАвтор имел ввиду, что написать код это одно, а поддерживать этот код в рабочем состоянии, использовать рефакторинг и прочее, прочее, это совсем другое. И вот тут, всякие GoTo и прочие вещи сильно мешают. Лично, я тоже не вижу в GoTo ни чего страшного, если он крутится где то в чёрном ящике, это не мои проблемы, но еще не было таких задач, где бы он мне действительно был нужен. Лен несколько назад было обсуждение где один чел привёл исходник "Пентамино" который изобиловал goto. Вобщем отрефакторить его просто так не выходило. Или после рефакторинга сорс становился еще хуже. Почитайте на досуге. Была также статья на хабре где автор (пректировщик железяк на примере конечного автомата) также доволил некоторые аргументы в пользу некоторых преимуществ перехода. Ну... про ассемблер все молчим. Кагбе понятно. Не с нашей высокуровневой колокольни на него смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 14:58 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
С goto ситуация очень простая. break, continue, return, catch, finally - всё это формы goto, которые стали включать в ЯВУ, когда поняли, что без него всё-таки хреново. На сегодняшний день они покрывают практически все реально встречающиеся ситуации, где он нужен в хорошо написанном коде, поэтому можно сказать, что чистый goto уже действительно не особо нужен. На тех языках, где какие-то из этих конструкций отсутствуют - хотя бы на PL/SQL - goto используется до сих пор. На момент накала споров о структурном программировании - то есть в семидесятые годы - этих конструкций в языках не было, соответственно, программа "без goto" зачастую была гораздо кривее, нежели программа с уместным использованием goto. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 15:09 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
maytonkmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. 1но как этот "критерий" можно выразить формально? Формально это пытался описать Мартин Фаулер. Других фундаментальных трудов по архитектуре я не знаю. Может кто подскажет. Буду благодарен. связность-прочность модулей от Глена Майерса известна? авторНадежность программного обеспечения. (Software Reliability. Principles and Practices, 1976) [Djv-ZIP] Перевод с английского Ю.Ю. Галимова под редакцией В.Ш. Кауфмана. (Москва: Издательство «Мир». Редакция литературы по математическим наукам, 1980) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2015, 23:12 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerС goto ситуация очень простая. break, continue, return, catch, finally - всё это формы goto, С моей точки зрения, основной вред от goto в его неограниченности (то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать). Приведенные ключевые слова не обладают таким свойством. Более того catch и finaly вполне себе структурные - они не влияют на поведение кода внутри данного блока, а только на обработку ошибочных ситуаций вне его и не мешают анализу кода. Break и continue я стараюсь избегать, кроме очень коротких фрагментов пользуясь структурными операторами. Код: c# 1. вместо Код: c# 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 14:08 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Объективные метрики... Я бы назвал вот что: - стоимость внесения изменений. Под изменениями понимаются изменения функциональности и изменения производительности (расширяемость, оптимизируемость). - стоимость поддержки в продакшне. - стоимость анализа функционала. Т.е. понимание того, что делает система. Очень актуально для больших и старых проектов. Как видите, объективно архитектуру можно оценить только после того, как её реализуешь :-) Из этих метрик следуют следующие качества хорошей архитектуры: - простота - расширяемость функционала с сохранением обратной совместимости - расширяемость по железу (кластеризация) - модульность - документированность - качественное логгирование и сбор статистики по использованию функционала и быстродействию системы - прежде всего, логгирования входных-выходных запросов, нагрузки и задержек - качественная визуализация предыдущего пункта - механизм уведомления саппорта о проблемах, понимание типовых проблем, наличие утилит и типовых методов их решения - устойчивость к аппаратным/программным сбоям, устойчивость к некорректным входным данным, устойчивость к перегрузке Суховато получилось, будь я студентом на лекции, записал бы в конспект, выучил, сдал и забыл)) Но надеюсь, что кому-то будет полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 14:14 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
И при чем тут ООП, SOLID и метрики кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 14:15 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
scfОбъективные метрики... Я бы назвал вот что: - стоимость внесения изменений. Под изменениями понимаются изменения функциональности и изменения производительности (расширяемость, оптимизируемость). - стоимость поддержки в продакшне. - стоимость анализа функционала. Т.е. понимание того, что делает система. Очень актуально для больших и старых проектов. Как видите, объективно архитектуру можно оценить только после того, как её реализуешь :-) Из этих метрик следуют следующие качества хорошей архитектуры: - простота - расширяемость функционала с сохранением обратной совместимости - расширяемость по железу (кластеризация) - модульность - документированность - качественное логгирование и сбор статистики по использованию функционала и быстродействию системы - прежде всего, логгирования входных-выходных запросов, нагрузки и задержек - качественная визуализация предыдущего пункта - механизм уведомления саппорта о проблемах, понимание типовых проблем, наличие утилит и типовых методов их решения - устойчивость к аппаратным/программным сбоям, устойчивость к некорректным входным данным, устойчивость к перегрузке Суховато получилось, будь я студентом на лекции, записал бы в конспект, выучил, сдал и забыл)) Но надеюсь, что кому-то будет полезно. я бы назвал это не функциональными требованиями . архитектура - это уже некоторая реализация требований, или, лучше, шаблон реализации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 17:06 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
F#softwarerС goto ситуация очень простая. break, continue, return, catch, finally - всё это формы goto, С моей точки зрения, основной вред от goto в его неограниченности (то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать). return - это гоуто обратно + выталкивание переменных из стека вызовов, а операция применение функции/метода - это гоуто туда + вталкивание переменных в стек вызовов. вызов функции и возврат из неё - точно такая же неограниченность как у goto. Раз от вызова и возврата нет основного вреда, то и goto нет никакого основного вреда. Вся религия вокруг вреда от гоуто связана с отсутствием в то время интерактивных редакторов с функцией поиска текста (сейчас обычно ctrl+f) и необходимостью просматривать скажем двадцать листов по 60 строчек с верху донизу. break и continue - не требует высасывать из пальца метку и содержат в себе информацию в какую сторону листать бумагу, а гоуту - нет. С брейком и континюе листать в среднем в два раза меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 17:59 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingiz вызов функции и возврат из неё - точно такая же неограниченность как у goto. goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 18:06 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Tgoto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие. А можно список языков программирования, в которых наблюдается это принципиальное отличие? F#С моей точки зрения, основной вред от goto в его неограниченности Вред от неограниченности невозможен. Возможен вред от ограниченности - невозможности применить там, где стоило бы. И возможен вред от неудачного применения. F#(то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать) Для меня это звучит религиозным догматом. Попробую привести фрагмент кода, который проиллюстрирует мысль: Код: plaintext 1. 2. F#Более того catch и finaly вполне себе структурные - они не влияют на поведение кода внутри данного блока, а только на обработку ошибочных ситуаций вне его и не мешают анализу кода. Это снова вопрос восприятия. catch и finally - это goto, который заменяет "правильный структурный" if (!error) ..... Влияют ли они на анализ - зависит от того, как они используются. F#Break и continue я стараюсь избегать, кроме очень коротких фрагментов пользуясь структурными операторами. "Структурные операторы" заставляют делать длинные блоки там, где они совершенно излишни. Скажем, условно Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 18:32 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerDima Tgoto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие. А можно список языков программирования, в которых наблюдается это принципиальное отличие? Уел. В С/С++ нельзя goto за пределы функции. По крайней мере в MS VC . Думал можно. В список могу предложить только АСМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 18:50 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39077028&tid=1340876]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 462ms |

| 0 / 0 |
