powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какие есть объективные метрики "хорошей архитектуры"?
25 сообщений из 136, страница 2 из 6
Какие есть объективные метрики "хорошей архитектуры"?
    #39076999
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawsoftwarerОчень легко
мне кажется, что не очень.
Да запросто. {A} - множество методов, упоминаемых в dfm как значения OnClick и подобных свойств. {B} - множество методов, работающих с объектами DataSet. Множества не должны пересекаться (или по вкусу более сильное условие - например, не должны вызывать друг друга).

kmawкак измерить вот это "буттон-клик"-ское решение?
Ну например, по байтам екзешника. Бессмысленный вопрос.

Dima Tif BisnessObject.WrongPassSeria()
...
endif
if BisnessObject.WrongPassNumber()
...
endif
...
Не очень понял, чем именно "очень просто" и какое отношение к нему имеет образец точно негодного кода.

Dima TСегодня ты запихал три строчки бизнес-логики в Click(), завтра поправил до 10, послезавтра (рано или поздно) потребуется выполнить эти 10 строк но без привязки к интерфейсу. Поэтому если надо написать 2+ строки, то делаю доп. метод в бизнес-логике и его вызываю из интерфейса.
В принципе, на это можно ответить, что никто не мешает в тот момент, когда "послезавтра потребуется" выделить метод и получить тот же результат, не впадая в ересь преждевременной оптимизации.

Dima TКак практика показывает (по закону подлости) потребуется именно то что в кнопке прописано
Так в чём проблема?
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077003
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerДа запросто. {A} - множество методов, упоминаемых в dfm как значения OnClick и подобных свойств. {B} - множество методов, работающих с объектами DataSet. Множества не должны пересекаться (или по вкусу более сильное условие - например, не должны вызывать друг друга).

это похоже на результат, на оценку существующей декомпозиции. а меня оценка предстоящего интересует. архитектура - это скелет, на который в ширь наращивается функциональность. и вот тут интересно выбрать путь - вправо/влево
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077019
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawэто похоже на результат, на оценку существующей декомпозиции. а меня оценка предстоящего интересует.
Вы просили метрику. Метрика считается по какому-то объекту. Нельзя посчитать метрику по фантазии.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077028
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawsoftwarerДа запросто. {A} - множество методов, упоминаемых в dfm как значения OnClick и подобных свойств. {B} - множество методов, работающих с объектами DataSet. Множества не должны пересекаться (или по вкусу более сильное условие - например, не должны вызывать друг друга).

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

Но я не думаю что в твоём вопросе нужно считать СС. Может тема топика - MVC/MVP ? И как правильно их готовить.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077156
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. но как этот "критерий" можно выразить формально?
Code Metrics в Visual Studio , SonarQube
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077445
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в интерфейсе (особенно в WPF) не должно быть не 1 строчки кода связанной с контекстом данных (моделью представления)
а еще лучше, если даже CodeBehind нет и всё сделано на XAML (жаль, что не всегда это возможно =)
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077460
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesв интерфейсе (особенно в WPF) не должно быть не 1 строчки кода связанной с контекстом данных (моделью представления)
а еще лучше, если даже CodeBehind нет и всё сделано на XAML (жаль, что не всегда это возможно =)
Про WPF ничего не скажу, не знаю. Если не считать этого - столь глобальные категоричные утверждения просто не имеют шанса быть верными. Это ровно то, про что я говорил выше - обезьянки зазубривают "goto бяка", при этом не понимают и не в состоянии объяснить - почему бяка, а сами при этом пишут так, что лучше бы уж писали с goto.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077863
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕще один пример забега по граблям из моей практики: вэб-интерфейс на PHP где я успешно скрестил интерфейс с бизнес-логикой. просто симбиоз получился, хрен вырвешь одно из другого. Писал в молодости, а проект живучий оказался, >10 лет прожил и умирать не планирует, и мне сейчас по хорошему надо новый дизайн сделать с современными фишками, а я не могу, надо все с нуля делать.
Считаю это правильным, не нужно постоянно допиливать один и тот-же инструмент, даже есть такое мнение, что это вредно.
Пока работает - выполняет свои функции.
Не устраивает - делаем другой с нуля, а не мучаемся со старым, это-же огромный плюс!

booby Даже если с goto лучше, этого ни в коем случае нельзя допустить: ...
Написанное далее ниасилил :)
Так Вам задачу решить нужно или с кодом возиться? Что важнее?
Или знаете как нужно писать промышленный код? Чтобы поддерживали наши дети и внуки :)
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077875
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby, это вообще про что? Какой-то странный пассаж про goto и имортозамещение. Вобщем оффтопик это.

Модератор!
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077950
f#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
f#
Гость
некоторые принципы можно почитать тут например: https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39077964
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...
Формально это пытался описать Мартин Фаулер. Других фундаментальных трудов по архитектуре
я не знаю. ...

Полистайте книжки и статьи Фредерика Брукса.
Это, м.б. не так формально, и не приведет ни к каким немедленным "паттернам",
но фундаментальней найти затруднительно.

например:
http://www.williamspublishing.com/Books/978-5-8459-1792-8.html
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39078608
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухалтер фантоцциbooby Даже если с goto лучше, этого ни в коем случае нельзя допустить: ...
Написанное далее ниасилил :)
Так Вам задачу решить нужно или с кодом возиться? Что важнее?
Или знаете как нужно писать промышленный код? Чтобы поддерживали наши дети и внуки :)
Автор имел ввиду, что написать код это одно, а поддерживать этот код в рабочем состоянии, использовать рефакторинг и прочее, прочее, это совсем другое. И вот тут, всякие GoTo и прочие вещи сильно мешают.
Лично, я тоже не вижу в GoTo ни чего страшного, если он крутится где то в чёрном ящике, это не мои проблемы, но еще не было таких задач, где бы он мне действительно был нужен.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39078629
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Миром десктопов программирование не ограничивается. Есть еще куча разных ASM`ом для разнообразнейших железяк. Что там про goto говорили?-)
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39078705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby Полистайте книжки и статьи Фредерика Брукса.
Это, м.б. не так формально, и не приведет ни к каким немедленным "паттернам",
но фундаментальней найти затруднительно.

например:
http://www.williamspublishing.com/Books/978-5-8459-1792-8.html
Спасибо. Почитаю.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39078709
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesАвтор имел ввиду, что написать код это одно, а поддерживать этот код в рабочем состоянии, использовать рефакторинг и прочее, прочее, это совсем другое. И вот тут, всякие GoTo и прочие вещи сильно мешают.
Лично, я тоже не вижу в GoTo ни чего страшного, если он крутится где то в чёрном ящике, это не мои проблемы, но еще не было таких задач, где бы он мне действительно был нужен.
Лен несколько назад было обсуждение где один чел привёл исходник "Пентамино" который изобиловал goto.
Вобщем отрефакторить его просто так не выходило. Или после рефакторинга сорс становился еще хуже.
Почитайте на досуге.

Была также статья на хабре где автор (пректировщик железяк на примере конечного автомата) также
доволил некоторые аргументы в пользу некоторых преимуществ перехода.

Ну... про ассемблер все молчим. Кагбе понятно. Не с нашей высокуровневой колокольни на него смотреть.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39078718
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С goto ситуация очень простая. break, continue, return, catch, finally - всё это формы goto, которые стали включать в ЯВУ, когда поняли, что без него всё-таки хреново. На сегодняшний день они покрывают практически все реально встречающиеся ситуации, где он нужен в хорошо написанном коде, поэтому можно сказать, что чистый goto уже действительно не особо нужен. На тех языках, где какие-то из этих конструкций отсутствуют - хотя бы на PL/SQL - goto используется до сих пор. На момент накала споров о структурном программировании - то есть в семидесятые годы - этих конструкций в языках не было, соответственно, программа "без goto" зачастую была гораздо кривее, нежели программа с уместным использованием goto.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39079204
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonkmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. 1но как этот "критерий" можно выразить формально?
Формально это пытался описать Мартин Фаулер. Других фундаментальных трудов по архитектуре
я не знаю. Может кто подскажет. Буду благодарен.

связность-прочность модулей от Глена Майерса известна?
авторНадежность программного обеспечения. (Software Reliability. Principles and Practices, 1976) [Djv-ZIP] Перевод с английского Ю.Ю. Галимова под редакцией В.Ш. Кауфмана.
(Москва: Издательство «Мир». Редакция литературы по математическим наукам, 1980)
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080093
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
softwarerС goto ситуация очень простая. break, continue, return, catch, finally - всё это формы goto,

С моей точки зрения, основной вред от goto в его неограниченности (то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать).

Приведенные ключевые слова не обладают таким свойством.

Более того catch и finaly вполне себе структурные - они не влияют на поведение кода внутри данного блока, а только на обработку ошибочных ситуаций вне его и не мешают анализу кода.

Break и continue я стараюсь избегать, кроме очень коротких фрагментов пользуясь структурными операторами.

Код: c#
1.
while (!found && iterator.moveNext)



вместо

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
while (iterator.MoveNext())
{
    ...
    if (isMatching(iterator.Current())
   {
        break;
    }
    ...
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080109
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объективные метрики... Я бы назвал вот что:
- стоимость внесения изменений. Под изменениями понимаются изменения функциональности и изменения производительности (расширяемость, оптимизируемость).
- стоимость поддержки в продакшне.
- стоимость анализа функционала. Т.е. понимание того, что делает система. Очень актуально для больших и старых проектов.

Как видите, объективно архитектуру можно оценить только после того, как её реализуешь :-)

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

Суховато получилось, будь я студентом на лекции, записал бы в конспект, выучил, сдал и забыл)) Но надеюсь, что кому-то будет полезно.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080111
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И при чем тут ООП, SOLID и метрики кода?
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080413
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfОбъективные метрики... Я бы назвал вот что:
- стоимость внесения изменений. Под изменениями понимаются изменения функциональности и изменения производительности (расширяемость, оптимизируемость).
- стоимость поддержки в продакшне.
- стоимость анализа функционала. Т.е. понимание того, что делает система. Очень актуально для больших и старых проектов.

Как видите, объективно архитектуру можно оценить только после того, как её реализуешь :-)

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

Суховато получилось, будь я студентом на лекции, записал бы в конспект, выучил, сдал и забыл)) Но надеюсь, что кому-то будет полезно.

я бы назвал это не функциональными требованиями . архитектура - это уже некоторая реализация требований, или, лучше, шаблон реализации
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080528
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F#softwarerС goto ситуация очень простая. break, continue, return, catch, finally - всё это формы goto,

С моей точки зрения, основной вред от goto в его неограниченности (то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать).

return - это гоуто обратно + выталкивание переменных из стека вызовов,
а операция применение функции/метода - это гоуто туда + вталкивание переменных в стек вызовов.

вызов функции и возврат из неё - точно такая же неограниченность как у goto.
Раз от вызова и возврата нет основного вреда, то и goto нет никакого основного вреда.

Вся религия вокруг вреда от гоуто связана с отсутствием в то время интерактивных редакторов с функцией поиска текста (сейчас обычно ctrl+f) и необходимостью просматривать
скажем двадцать листов по 60 строчек с верху донизу.
break и continue - не требует высасывать из пальца метку и содержат в себе информацию
в какую сторону листать бумагу, а гоуту - нет.
С брейком и континюе листать в среднем в два раза меньше.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080539
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz вызов функции и возврат из неё - точно такая же неограниченность как у goto.
goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080564
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tgoto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.
А можно список языков программирования, в которых наблюдается это принципиальное отличие?

F#С моей точки зрения, основной вред от goto в его неограниченности
Вред от неограниченности невозможен. Возможен вред от ограниченности - невозможности применить там, где стоило бы. И возможен вред от неудачного применения.

F#(то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать)
Для меня это звучит религиозным догматом. Попробую привести фрагмент кода, который проиллюстрирует мысль:

Код: plaintext
1.
2.
1: for (int i = 0; i < 10; i++) goto 1; // трудно читать, потому что goto
1: for (int j = 0; j < 10; j++) break 1; // легко читать, потому что не goto



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.
public void doSomething1(SomeObject param) {
  if (param == null) return;
  // ... 
  // длинный линейно выполняемый код,
  // всё просто и понятно
}

public void doSomething2(SomeObject param) {
  if (param != null) {
    // ... 
    // длинный линейно выполняемый код
    // к концу которого мы нафиг не понимаем
    // что это за скобка в конце
    // и вынуждены смотреть в начало 
    // или ставить идиотские комментарии 
    // типа 
  } // if (param != null)
}
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080580
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerDima Tgoto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.
А можно список языков программирования, в которых наблюдается это принципиальное отличие?
Уел. В С/С++ нельзя goto за пределы функции. По крайней мере в MS VC . Думал можно.
В список могу предложить только АСМ.
...
Рейтинг: 0 / 0
25 сообщений из 136, страница 2 из 6
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какие есть объективные метрики "хорошей архитектуры"?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]