|
|
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
говорят, что бизнес-логика и доступ к БД в буттон-клик плохо. но как этот "критерий" можно выразить формально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 18:59 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Как-то так: все методы интерфейса должны быть связаны только с интерфейсом + 1 строка бизнес-логики. Сегодня ты запихал три строчки бизнес-логики в Click(), завтра поправил до 10, послезавтра (рано или поздно) потребуется выполнить эти 10 строк но без привязки к интерфейсу. Поэтому если надо написать 2+ строки, то делаю доп. метод в бизнес-логике и его вызываю из интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 19:12 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. но как этот "критерий" можно выразить формально?В человеко-часах требующихся на правку этой бизнес-логики если изменились требования бизнеса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 19:20 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White OwlВ человеко-часах требующихся лучше сразу в деньгах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 19:28 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. 1но как этот "критерий" можно выразить формально? Формально это пытался описать Мартин Фаулер. Других фундаментальных трудов по архитектуре я не знаю. Может кто подскажет. Буду благодарен. Вообще бизнес-логика в батоне - это не хорошо и не плохо. Как говорят it depends. Всё зависит от того какое приложение. Много логики может лежать к примеру в браузерном коде (Angular). В наше время это уже стало нормой. Поэтому радикалы те кто говорят что в "батоне" плохо. И также вредные советы дают любители делать стек в 5-10 слоёв бизнес уровней. Видал я таковых много. Аллергия на них тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 19:43 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawКакие есть объективные метрики "хорошей архитектуры"? Себестоимость решения типовых задач сопровождения и её изменение по времени. Процент задач сопровождения, реализация которых внесла регрессионные ошибки, и его изменение по времени. Средний промежуток времени между задачами, реализация которых затруднительна в выбранной архитектуре. Средняя удовлетворённость пользователей работой системы и её изменение по времени. Количество лет, прожитых эксплуатируемой системой без постоянных разговоров о том, что её следует заменить или переписать. kmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. Большинство человеческих существ, и программисты не исключение, предпочитают держать мозги в перманентно выключенном состоянии. Для этого они стараются обходиться простыми лозунгами типа "еврей - плохо", "goto - плохо" или там "логика в буттон-клик - плохо". kmawно как этот "критерий" можно выразить формально? Очень легко. Другой вопрос, что этого совершенно незачем делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:04 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White Owlkmawговорят, что бизнес-логика и доступ к БД в буттон-клик плохо. но как этот "критерий" можно выразить формально?В человеко-часах требующихся на правку этой бизнес-логики если изменились требования бизнеса. это последствия. а оценку я представлял как какую-то характеристику графа. только вот какого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:05 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerОчень легко мне кажется, что не очень. довольно глубоко влияние на оценку мудрости пройденного опыта оценивающего субъекта, в который включено, в том числе, и наступление на грабли "буттон-клик" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:09 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawмудрости - ь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:11 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
вот допустим есть форма ввода - use-case: - сведения о человеке: паспорт, место жительства, прописка и т.п. - сведения о местах работы - сведения где служил это все сохраняется в карточке. по буттон-клик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:17 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
как измерить вот это "буттон-клик"-ское решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:18 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Как же уже запарили эти кальки ... В вашем кнопко-нажимательском примере не хватает главного - деталей реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:32 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovКак же уже запарили эти кальки ... В вашем кнопко-нажимательском примере не хватает главного - деталей реализации. детали, на то и детали. а оценка должна строиться по некоторым "классам эквивалентности". вот за что бы зацепиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:37 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawкак измерить вот это "буттон-клик"-ское решение? просто Код: sql 1. 2. 3. 4. 5. Можно усложнить, тогда StorуPassport должен сохранить какие конкретно параметры его не устроили и потом это опросить Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:39 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawдетали, на то и детали. а оценка должна строиться по некоторым "классам эквивалентности". вот за что бы зацепиться.С лечением по фотографии (а это ваш пример) - к экстрасенсам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:43 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Tkmawкак измерить вот это "буттон-клик"-ское решение? просто Код: sql 1. 2. 3. 4. 5. Можно усложнить, тогда StorуPassport должен сохранить какие конкретно параметры его не устроили и потом это опросить Код: sql 1. 2. 3. 4. 5. 6. 7. это пахнет говнокодингом . я не эту мысль заложил в свой пост ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:46 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmaw, давай уже свой макет, хвастун. Мы щас тут будем ужом изворачиваться чтоб угадать твой юзкейс а ты - только парафинить наш код. Ага. Нашёл дураков. Код давай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 20:51 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmaw... это пахнет говнокодингом . я не эту мысль заложил в свой пост Я пример сделал для особо одаренных, в реале сложнее, примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:11 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Tkmaw... это пахнет говнокодингом . я не эту мысль заложил в свой пост Я пример сделал для особо одаренных, в реале сложнее, примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. не обижайся. это была ирония. в твоем коде идет обращение к внешнему (для представленного кода) сервису "BisnessObject". а почему не в коде баттон-клика сразу дернуть sql или хранимую процедуру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:17 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawне обижайся. это была ирония. в твоем коде идет обращение к внешнему (для представленного кода) сервису "BisnessObject". а почему не в коде баттон-клика сразу дернуть sql или хранимую процедуру? Я же сразу написал: Dima TСегодня ты запихал три строчки бизнес-логики в Click(), завтра поправил до 10, послезавтра (рано или поздно) потребуется выполнить эти 10 строк но без привязки к интерфейсу. Поэтому если надо написать 2+ строки, то делаю доп. метод в бизнес-логике и его вызываю из интерфейса. Т.е. завтра просто потребуется вызвать тоже самое, но при этом кнопки просто нет. Как практика показывает (по закону подлости) потребуется именно то что в кнопке прописано. И самые грабли (как раз по ним сейчас бегу) надо сделать все тоже самое но вообще без интерфейса. С командной строки. Тут даже мой совет "1 строка бизнес-логики" не поможет. Эта строка все равно внутри на интерактив с пользоватем заточена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:31 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Tkmawне обижайся. это была ирония. в твоем коде идет обращение к внешнему (для представленного кода) сервису "BisnessObject". а почему не в коде баттон-клика сразу дернуть sql или хранимую процедуру? Я же сразу написал: Dima TСегодня ты запихал три строчки бизнес-логики в Click(), завтра поправил до 10, послезавтра (рано или поздно) потребуется выполнить эти 10 строк но без привязки к интерфейсу. Поэтому если надо написать 2+ строки, то делаю доп. метод в бизнес-логике и его вызываю из интерфейса. Т.е. завтра просто потребуется вызвать тоже самое, но при этом кнопки просто нет. Как практика показывает (по закону подлости) потребуется именно то что в кнопке прописано. И самые грабли (как раз по ним сейчас бегу) надо сделать все тоже самое но вообще без интерфейса. С командной строки. Тут даже мой совет "1 строка бизнес-логики" не поможет. Эта строка все равно внутри на интерактив с пользоватем заточена. ну так с этим никто спорить не будет. какая оценка? насколько этот "буттон-клик" "уникален?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:39 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Еще один пример забега по граблям из моей практики: вэб-интерфейс на PHP где я успешно скрестил интерфейс с бизнес-логикой. просто симбиоз получился, хрен вырвешь одно из другого. Писал в молодости, а проект живучий оказался, >10 лет прожил и умирать не планирует, и мне сейчас по хорошему надо новый дизайн сделать с современными фишками, а я не могу, надо все с нуля делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:43 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TЕще один пример забега по граблям из моей практики: вэб-интерфейс на PHP где я успешно скрестил интерфейс с бизнес-логикой. просто симбиоз получился, хрен вырвешь одно из другого. Писал в молодости, а проект живучий оказался, >10 лет прожил и умирать не планирует, и мне сейчас по хорошему надо новый дизайн сделать с современными фишками, а я не могу, надо все с нуля делать. это как в клубе анонимных алкоголиковархитекторов. меня интересуют не "воспоминания", "предвидения", "сто пудово так делать низя", а какое-то выраженное в, пусть, чел./час. , о кстате, неплохая метрика. только как значение оценить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:48 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawэто как в клубе анонимных алкоголиковархитекторов. меня интересуют не "воспоминания", "предвидения", "сто пудово так делать низя", а какое-то выраженное в, пусть, чел./час. , о кстате, неплохая метрика. только как значение оценить? я тебе свои выводы из своего опыта написал 18279697 даже частично описал откуда они взялись 18280086 18280128 а дальше твое дело, хочешь на слово поверь, хочешь по граблям пробегись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:55 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Tkmawэто как в клубе анонимных алкоголиковархитекторов. меня интересуют не "воспоминания", "предвидения", "сто пудово так делать низя", а какое-то выраженное в, пусть, чел./час. , о кстате, неплохая метрика. только как значение оценить? я тебе свои выводы из своего опыта написал 18279697 даже частично описал откуда они взялись 18280086 18280128 а дальше твое дело, хочешь на слово поверь, хочешь по граблям пробегись. капитан очевидность - не оценщик. хочется более формального подхода. может не вообще, а, например, к "типовой архитектуре". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:58 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Ttchingiz вызов функции и возврат из неё - точно такая же неограниченность как у goto. goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие. return и вызов функции - работают в другую функцию throw - такой же goto, так и другие, но не упомянутый Софтварером - работает в другую функцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 20:21 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima T... В список могу предложить только АСМ. + первоначальные версии FORTRAN, позволявшие, кроме этого, иметь несколько альтернативных точек входа в процедуру (ENTRY). Есть две причины, по которым goto считают нежелательным: одна обращена к "стилю" программиста, вторая к эффективности выполнения goto компьютером. Причина, обращенная к программистам, по по которой великие Дейкстра и Вирт изживали/проклинали goto заключается в том, что код с использованием goto может оказаться непригоден (а может оказаться и пригоден) для автоматического улучшения оптимизирующим компилятором. код вида (стрелки - переходы по GOTO) ---------- |блок 0 | ---------- / \ / \ --------- ---------- | блок 1| -> | блок 2 | | | <- | | ---------- ---------- откажется оптимизировать, наверно, любой компилятор. Как и "полу-вложенные" циклы вида --------- цикл 1 | | | цикл 2 ----| | | | | ---------- | | ----| Но такой цикл, буде он понадобится, вряд ли возможно выписать "эффективно" иначе, как с использованием goto. (Сдается, что именно величие Дейкстры и Вирта привело к превращению программистов в обезьян, хотя и не они были родоначальниками анти-goto движения. Т.к. обучение было просто заменено запретом использования.) В смысле потери времени на выполнение goto компьютером тут есть тема историческая - в некоторых, мертвых уже, языках реализация команды goto как команды языка высокого уровня, была неэффективной по дизайну. А современные процессорные реалии для платформ с много-конвейерным выполнением, вроде Intel, говорят так - любые варианты переходов приводят к разрыву потока выполнения машинных команд. Вместо помещения следующей команды на конвейер выполнения, идет вычисление адреса и чтение в кеш инструкций с вычисленного адреса. В этом смысле "структурный" if, switch, continue, try-catch и т.д. и т.п. - все зло одного порядка с goto. Иногда в целях определяют "близкий" и "далекий" переход (как в байт-кодах java-машины, например), но факта "разрыва потока выполнения" это отменить не может, даже если удается не перезаполнять кеш инструкций при "близком" переходе. Чем больше goto, тем медленнее работает программа. И не важно - сидит он в кишках структурных If, try-cacth или в явно выписанном программистом гонимом goto. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 20:27 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingizreturn и вызов функции - работают в другую функцию Они работают очевидно. Т.е. понятно как работают с первого взгляда на код. tchingizthrow - такой же goto, так и другие, но не упомянутый Софтварером - работает в другую функцию Про это вообще отдельный холивар можно устроить. Исключения - мутная тема, не пользуюсь, поэтому не буду спорить. Недавно на хабре была тема про исключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 20:50 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Ttchingizreturn и вызов функции - работают в другую функцию Они работают очевидно. Т.е. понятно как работают с первого взгляда на код. goto работает очевидно. Т.е. понятно как работает с первого взгляда на код. в случае вызова функции func - надо сказать Код: plaintext 1. в случае перехода на метку metka - надо сказать Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 21:05 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
booby. Чем больше goto, тем медленнее работает программа. я уж боюсь вообразить как затормозить программу добавление в нее циклов while ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 21:08 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingizgoto работает очевидно. Т.е. понятно как работает с первого взгляда на код. Я честно сознался что думал goto позволяет перейти из одной функции в другую. В С/С++ не позволяет, не компилируется. Почему - вопрос второстепенный. При таком ограничении goto очевидно, не буду спорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 21:16 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima Ttchingiz вызов функции и возврат из неё - точно такая же неограниченность как у goto. goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.Нет. Языки в которых явно существуют "функции" не позволяют делать goto в другие "функции". А вот языки в которых нету такой сущности - там можно прыгать как вздумается. Примеры: Asm, Basic, Fortran. По существу, из-за этих языков и началась мода на запрет goto. Из-за которой уже и появились языки с четко выраженными структурными блоками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 21:24 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingizbooby. Чем больше goto, тем медленнее работает программа. я уж боюсь вообразить как затормозить программу добавление в нее циклов while деталь: на сей момент я программирую исключительно в pl/sql, в котором нет циклов с постусловием. Однажды, разглядывая вложенный цикл, я преодолел страх , и заменил while на допотопно-рукописный do ... while - <<my_label>> ... some code ... if condition then goto loop_label end; И код тот я не показываю зевакам, и дело свое полезное он делает. В общем же плане - бояться не надо - техника оптимизации, заключающаяся в объединении мелких циклов в один придумана специфически для того, чтобы избежать слишком мелких, "однострочных" циклов. Прежде чем начать бояться добавить while, разумно посмотреть - не может ли его тело быть объединено без разрыва потока c одним из уже выписанных while. Разумному программисту не всякий while страшен. А не разумному и море по колено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 21:59 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TИсключения - мутная тема, ничего мутного, особенно если разобраться с реализацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 23:40 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerF#С моей точки зрения, основной вред от goto в его неограниченности Вред от неограниченности невозможен. Возможен вред от ограниченности - невозможности применить там, где стоило бы. И возможен вред от неудачного применения. Мне кажется только из за любви к спору такой знающий человек как вы написали такую фразу. Существуют польза от ограничений (к лестницам зачем-то приделывают перила) и в последние несколько десятилетий в программировании это все довольно сильно эксплуатируется (см безопасные языки, DBC и так далее) F#(то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать) Для меня это звучит религиозным догматом. Попробую привести фрагмент кода, который проиллюстрирует мысль: Код: plaintext 1. 2. Никогда не использовал break с меткой, и, как мне кажется, ни один язык с которым я работал этого не позволяет. Но мне кажется, логически по второму утверждению можно сказать больше чем по первому - например, что будет очуществлен выход из какого-то цикла, а не передача управления в произвольное место функции. Так? F#Более того catch и finaly вполне себе структурные - они не влияют на поведение кода внутри данного блока, а только на обработку ошибочных ситуаций вне его и не мешают анализу кода. Это снова вопрос восприятия. catch и finally - это goto, который заменяет "правильный структурный" if (!error) ..... Влияют ли они на анализ - зависит от того, как они используются. Если вы процессор который выполняет код, то для вас все эквивалентно goto, если вы человек, то для анализа кода важны гарантии и ограничения. Catch и finally ограничены по сравнению с goto и также декларируют предназнаяение кусков кода. "Структурные операторы" заставляют делать длинные блоки там, где они совершенно излишни. Скажем, условно Если наложить на себя ограничение не писать такого кода нигде кроме начала функции, вред от нескольких точек выхода уменьшается - фактически, поверх стандартного синтаксиса языка такое соглашение добавляет некоторую секцию guard conditions в описание функции которая просто переиспользует фигурные скобки тела функции для условия. А еще я люблю равиолли-код и стараюсь не делать больших функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 08:29 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Не об хорошей архитектуре, а хоть какой-то ... Рассмотрим к примеру создание проектов, которые имеют скажем много диалоговых форм и формируют много отчетов. Начнем с простого примера. К примеру рассмотрим ту часть проекта, которая связана с формированием отчетов. Без всякой архитектуры ---------------------------- Формируем отчеты с использованием "жесткого" кода без предоставления всяких настроек ... С хоть какой-то архитектурой ---------------------------------- Имеется какая-либо подсистема управления отчетами, которая к примеру /упрощенно/ предоставляет возможности настройки и работы с отчетами. К примеру: - опции формируемых pages берутся из /например/ xml file; - сохраняются данные об сформированных отчетах /в т.ч. last reports/; - возможность отправки отчетов на e-mail; - ... - ... - ... В чем разница в подходах? Программы без всякой архитектуры не позволяют и не умеют ... ... .. Программы у которых имеется хоть какая-то подсистема управления отчетами малого того, что позволяет ... ... ..., но также экономит много времени при создании новых проектов. PS: Вопросы организации программного кода также важны, но на мой взгляд это уже скорее подход к реализации архитектуры. При этом архитектура и реализация программного кода должна быть спроектирована так, чтобы эту подсистему /например "управления отчетами"/ могли легко расширить и использовать другие программисты. Конечно об выше сказанном можно сказать это "тривиально и об этом и так всем известно" ... Что по этому поводу можно ответить? Знать и использовать "знания" это как "небо и земля". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 11:21 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TВ список могу предложить только АСМ. Ну, ещё древние версии бейсика, те, которые обязывали нумеровать строки и не имели подпрограмм. Но в целом goto за пределы функции действительно нехарактерен, например, в Си для этого придумали специальную сладкую парочку setjmp/longjmp . В древние времена одной из претензий к goto называли то, что им можно прыгнуть внутрь цикла, что, в принципе, может привести программу в непредсказуемое состояние, но сказать честно, я никогда не видел того "спагетти", о котором писал Дейкстра, и никогда не видел, чтобы goto использовался человеком, который не знал бы очень чётко что и зачем он делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 11:55 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
ищщинна сей момент я программирую исключительно в pl/sql, в котором нет циклов с постусловием Это не совсем правда. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. - вполне себе неплохой заменитель цикла с пост-условием. В PL/SQL действительно иногда целесообразно использовать goto, но потому, что там нет finally и continue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:02 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TИсключения - мутная тема, не пользуюсь, поэтому не буду спорить. У Джоэля была хорошая фраза про то, что оперирование указателями - это не навык, а способность, которая либо есть, либо нет. Я иногда думаю, что её можно сказать и про исключения. Чтобы понять исключения, надо просто заставить человек год-другой-третий хорошо попрограммировать без исключений. Не простые учебные задачи, а настоящие. После этого показать ему исключения - и он бросится на них как на манну небесную. К сожалению, на практике сейчас чаще получается наоборот - человеку показывают исключения, а он толком не знает и не понимает, зачем они. И тогда они действительно порой на всю жизнь становятся "мутной темой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:07 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
На тему сабжа. Не знаю что добавить. Пока - ни за ни против. Но хотелось-бы обсудить различные варианты использования с теми кто кодил на Гоу. https://golang.org/doc/faq#exceptions Why does Go not have exceptions? We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code. It also tends to encourage programmers to label too many ordinary errors, such as failing to open a file, as exceptional. Go takes a different approach. For plain error handling, Go's multi-value returns make it easy to report an error without overloading the return value. A canonical error type, coupled with Go's other features, makes error handling pleasant but quite different from that in other languages. Go also has a couple of built-in functions to signal and recover from truly exceptional conditions. The recovery mechanism is executed only as part of a function's state being torn down after an error, which is sufficient to handle catastrophe but requires no extra control structures and, when used well, can result in clean error-handling code. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:20 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarer, заменитель, только с двумя goto вместо одного. Надо сказать, что сделал сделал я это один единственный раз, в одном единственном месте. Там, где идет работа с базой данных, о желании пооптимизировать работу goto не стоит рассказывать вслух и прилюдно. Могут и уволить, не дождавшись конца рассказа. continue есть с 11 версии, потребности в finally ощутить не сумел, так как практически не использую "объектные возможности". Лично для себя вывел следующее "отдаленно похожее на finally" правило большого пальца: Серверная процедура , возвращающая скалярные значения ( не курсоры) и предназначенная для вызова с клиента, должна исключать возможность явного выброса ошибки наружу. Здесь в качестве finally работает блок when others такой процедуры. Может быть это плохое правило, т.к. ведет к явному разделению серверного кода на предназначенный для вызова с клиента и не предназначенный, за счет включения "лишних" возвращаемых параметров об успешности выполнения. Но лучшего пока не изобрел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:28 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarer... никогда не видел, чтобы goto использовался человеком, который не знал бы очень чётко что и зачем он делает. Примеров полно . Открывай любой студенческий топик :) softwarerDima TИсключения - мутная тема, не пользуюсь, поэтому не буду спорить. Чтобы понять исключения, надо просто заставить человек год-другой-третий хорошо попрограммировать без исключений. Не простые учебные задачи, а настоящие. После этого показать ему исключения - и он бросится на них как на манну небесную. Я тот самый человек. Долго писал на FoxPro 2 (DOS), затем на 6-м фоксе, затем перешел на 9-й, где одно из новшеств это исключения. Как-то не впечатлился этой манной небесной, не пользуюсь. Теорию знаю, после изучения теории желание применить было, но было негде. Сейчас есть где, но желания нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:37 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
F#Мне кажется только из за любви к спору такой знающий человек как вы написали такую фразу. Я никогда не делаю чего-либо из любви к спору. Но нередко за неё принимают любовь к неочевидной собеседнику истине. F#Существуют польза от ограничений (к лестницам зачем-то приделывают перила) Польза от ограничений и вред от неограниченности - разные вещи. Правильнее сказать так - от ограничений бывает польза и бывает вред, от неограниченности бывает польза и бывает вред. Лестничные перила, кстати - исключительно удачный пример. Они бывают далеко не на всех лестницах, а там, где бывают - как правило, позволяют через себя перелезть. То есть защищают от случайных проблем, но не сдерживают целенаправленное действие. Для ЯП именно такой подход обычно является лучшим вариантом. F#Никогда не использовал break с меткой, и, как мне кажется, ни один язык с которым я работал этого не позволяет. Я не знаю точно, какие именно позволяют, но суть ведь не в этом. F#Но мне кажется, логически по второму утверждению можно сказать больше чем по первому - например, что будет очуществлен выход из какого-то цикла, а не передача управления в произвольное место функции. Так? Имхо, по обоим можно сказать, что в результате произойдёт выход из какого-то количества вложенных циклов и управление останется внутри другого количества вложенных циклов (то и другое может быть и нулевым). Это если формально. А если фактически - то в обоих случаях надо отыскать глазами метку и дальше никакой разницы (ну кроме того, что первая строчка зациклится, а вторая - нет, но этого так никто и не увидел ) F#softwarerЭто снова вопрос восприятия. catch и finally - это goto, который заменяет "правильный структурный" if (!error) ..... Влияют ли они на анализ - зависит от того, как они используются. Если вы процессор который выполняет код, то для вас все эквивалентно goto, если вы человек, то для анализа кода важны гарантии и ограничения. Catch и finally ограничены по сравнению с goto и также декларируют предназнаяение кусков кода. Метка в goto обычно является осмысленным идентификатором и также декларирует предназначение goto. Ещё раз: это вопрос сугубо восприятия. Вы привыкли к некоторым конструкциям, и они кажутся Вам проще и понятнее. Возьмёте другой язык, другую практику - привыкнете к его специфике. Я, вот, привык даже к такому убожеству, как неименованные и ненаследуемые конструкторы :) F#Если наложить на себя ограничение не писать такого кода нигде кроме начала функции, вред от нескольких точек выхода уменьшается - фактически, поверх стандартного синтаксиса языка такое соглашение добавляет некоторую секцию guard conditions в описание функции которая просто переиспользует фигурные скобки тела функции для условия. Можно воспринимать и так. Но, в общем, не суть. Вред от "длинного блока" в любом случае больше, чем от "нескольких точек выхода". F#А еще я люблю равиолли-код и стараюсь не делать больших функций. Я тоже, но это зависит от задачи и инструмента. Не так редко большие функции являются естественным и правильным (с точки зрения в том числе читаемости кода и прочего удобства сопровождения) выражением мысли. Чтобы искусственно внедрить мелкие функции, приходится делать либо вложенные функции (сомнительная практика, имхо) либо искусственный класс (что, пожалуй, ещё хуже). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:44 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
boobyзаменитель, только с двумя goto вместо одного Эдак Вы и в самом структурном цикле найдёте goto. boobycontinue есть с 11 версии Эх, с одиннадцатой. Ещё хватает клиентов, которые с девятки-то не ушли :) booby потребности в finally ощутить не сумел, так как практически не использую "объектные возможности" Пожму плечами. finally - наиболее очевидно необходимая вещь во всех исключениях. Если Вы хоть раз явно открывали курсор, странно не ощущать потребности в ней. boobyЛично для себя вывел следующее "отдаленно похожее на finally" правило большого пальца: Серверная процедура , возвращающая скалярные значения ( не курсоры) и предназначенная для вызова с клиента, должна исключать возможность явного выброса ошибки наружу. Здесь в качестве finally работает блок when others такой процедуры. Блок when others при всём желании не сможет работать как finally (ну разве что если возбуждать исключение специально чтобы в него попасть). Что же до правила - оно имхо максимально неудачно и может быть понято только если в качестве клиента выступает какое-нибудь древнее убожество, которое не умеет работать с исключениями. Но это тема скорее для форума Oracle. booby Может быть это плохое правило, т.к. ведет к явному разделению серверного кода на предназначенный для вызова с клиента и не предназначенный, В инкапсуляции в принципе нет ничего плохого. Просто это правило - примерно как оглобли, приделанные к автомобилю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 12:51 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima T Примеров полно . Открывай любой студенческий топик :) Открыл первый же. Применение осознанное и разумное, укладывающееся как раз в последнюю оставшуюся типовую ситуацию - "вроде finally для continue". Я бы, допустим, предпочёл реализовать этот участок кода через цикл for и без goto, но возмущаться тупостью автора меня не тянет. Dima TЯ тот самый человек. Долго писал на FoxPro 2 (DOS), затем на 6-м фоксе, затем перешел на 9-й, где одно из новшеств это исключения. Как-то не впечатлился этой манной небесной, не пользуюсь. Теорию знаю, после изучения теории желание применить было, но было негде. Сейчас есть где, но желания нет. От второго фокса у меня осталось смутное воспоминание о чём-то жутком. Скажу так, лично я истинный смысл исключений ощутил в тот момент, когда, уже какое-то время поработав с ними (ну так - приятная фенька) вдруг оказался перед необходимостью написать на Турбо-Паскале вещь гораздо более сложную, чем писал в студенческие времена. И вот, после того как я в третий раз переписал код так, чтобы ошибки обрабатывались где нужно и как нужно, и при этом работа с ними не загромождала логику, не занимала места в пять раз больше, чем собственно основной код итп, я вдруг осознал, что та подсистема обработки ошибок, которую я делаю - это велосипедная реализация исключений. И сравнив лучшее, чего мне удалось добиться, с чеканной стройностью, понятностью и красотой кода с исключениями - я, мягко говоря, не захотел больше возвращаться в тёмное прошлое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 13:10 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerЯ бы, допустим, предпочёл реализовать этот участок кода через цикл for и без goto, но возмущаться тупостью автора меня не тянет. Думаю потянет, если он привыкнет и начнет все циклы так реализовывать. softwarerОт второго фокса у меня осталось смутное воспоминание о чём-то жутком. Скорее всего просто не освоил. В фоксе многое не так "как везде", из-за этого большой порог входа. softwarerСкажу так, лично я истинный смысл исключений ощутил в тот момент, когда, уже какое-то время поработав с ними (ну так - приятная фенька) вдруг оказался перед необходимостью написать на Турбо-Паскале вещь гораздо более сложную, чем писал в студенческие времена. И вот, после того как я в третий раз переписал код так, чтобы ошибки обрабатывались где нужно и как нужно, и при этом работа с ними не загромождала логику, не занимала места в пять раз больше, чем собственно основной код итп, я вдруг осознал, что та подсистема обработки ошибок, которую я делаю - это велосипедная реализация исключений. И сравнив лучшее, чего мне удалось добиться, с чеканной стройностью, понятностью и красотой кода с исключениями - я, мягко говоря, не захотел больше возвращаться в тёмное прошлое. ИМХУ ты не на то акцент сделал. Главное тут "в третий раз переписал", а с исключениями или без - дело десятое. Думаю и без исключений уже не было бы в пять раз больше кода обработки ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 14:53 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Покурил Golang - и в третий раз снова переписал. Уже клиника ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 15:02 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarer... Эдак Вы и в самом структурном цикле найдёте goto. неужели есть сомнения в его там наличии? :) softwarerПожму плечами. finally - наиболее очевидно необходимая вещь во всех исключениях. Если Вы хоть раз явно открывали курсор, странно не ощущать потребности в ней. Пожму плечами. Finally - в части обязательной достижимости - синтаксический сахар, "Играет" он только сохранением контекста возникшего в try неконтролируемого исключения. Что с какой-то долей приближения тоже имитируется при необходимости. Зачем придумали try-with-resources, если finally и без него великолепен? И почему их теперь два - try? Как понять где resources, а где нет. Вот выделенный массив в памяти - это не resources, а манипулятор файлом - resources. Потому что ресурс под названием массив полностью управляется машиной времени выполнения. Его она сама освободит (когда-нибудь) без участия программиста. А манипулятор файла - ресурс, запрашиваемый из внешнего, по отношению к runtime, мира. Для pl/slq курсорная переменная, объявленная и открытая в блоке - локально управляемый ресурс, аналогично памяти в системах со сбором мусора. Машина выполнения pl/sql гарантирует освобождение этого ресурса если не сразу по выходу курсорной переменной из области видимости, то по завершению вызова. И обычно гораздо раньше, чем проснется сборщик мусора в java. Закрывать явно локально открытые курсоры - гораздо ближе к благим пожеланиям и правилам хорошего тона, чем к мечтам о finally. softwarerБлок when others при всём желании не сможет работать как finally (ну разве что если возбуждать исключение специально чтобы в него попасть). значит, все-таки может. Хотя я на этом в детальной точности не настаиваю. Речь идет о "замыкании", гарантии завершения одного блока в целях 100% попадания в следующий. В частном случае следующим может быть сам раздел when others. softwarerЧто же до правила - оно имхо максимально неудачно и может быть понято только если в качестве клиента выступает какое-нибудь древнее убожество, которое не умеет работать с исключениями. Но это тема скорее для форума Oracle. ... Мне кажется, что "убожество" здесь ключевое слово. В том смысле, что все не соответствующее "моей" модели восприятия мира является убожеством. Мне вот может представляться убожеством, что где-то еще есть клиенты , эксплуатирующие Oracle 9i. Раз клиенты, значит эксплуатируют 9i, оплачивая при этом Sustaining Support, и не имея технической возможности замены версии. Верю я в это или нет (верю) - не имеет "архитектурного" значения. В смысле заголовка, заявленного в топике имеет значение другое - где и как проходит граница того, что вы называете разрабатываемой системой или ее ядром и внешнего по отношению к ней мира. С максимально ясным и простым обозначением этих границ, не требующим расширенных навыков для опознавания стоящих по границе плакатов. Та тропинка, которая привела меня к моей оглобле, в целом двигалась из точки зрения, считающей, что клиент - внешний по отношению к "системе" потребитель. К степени убожества которого я, если смогу, не буду предъявлять специальных требований, а если не смогу, то буду искать способ их минимизации. Думаю, что вы попутали. Если клиент - автомобиль, то я не предполагаю наличие или отсутствие у него оглоблей. Я предлагаю ему трос, уцепившись за который он сможет вытащить интересующую его информацию из внешней по отношению к нему, клиенту, системы. О том - открываются курсоры и как закрываются - в нормальной истории ему знать не положено, предположительно совсем. Это в предположении, что слой доступа к данным и взаимодействия с сервером он не рожает сам, а берет любой готовый, с любым крюком, пригодным к цеплянию за мой трос. Хотя, если убрать оглобли и убожество, все действительно сведется к техническим особенностям, связанным с обработкой исключений "убогими клиентами" тоже. Как у телеги две оглобли, так и у меня есть еще одно, второе "правило большого пальца" по вопросу взаимодействия с убогими клиентами. Но от темы исключений/goto оно еще дальше, так что пусть ждет следующих встреч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 15:55 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Встречаются разные извращения, например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 16:44 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 16:49 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
что-то все свелось к обсуждению "плохих" goto, try/catch/finaly ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 17:35 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Это тоже в некотором роде метрика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 18:28 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawчто-то все свелось к обсуждению "плохих" goto, try/catch/finalyCode Metrics в VS посмотрели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 18:49 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
skyANAkmawчто-то все свелось к обсуждению "плохих" goto, try/catch/finalyCode Metrics в VS посмотрели? да его и раньше видел. это не то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 18:51 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawчто-то все свелось к обсуждению "плохих" goto, try/catch/finaly Обычное явление. Сказать почему "плохо" гораздо проще, достаточно привести один пример. Чтобы доказать что "хорошо" надо кучу примеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 18:58 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerDima TИсключения - мутная тема, не пользуюсь, поэтому не буду спорить. У Джоэля была хорошая фраза про то, что оперирование указателями - это не навык, а способность, которая либо есть, либо нет. Я иногда думаю, что её можно сказать и про исключения.Не соглашусь. Работе с указателями достаточно просто обучить. Достаточно объяснить как переменная хранится в памяти и объяснить что указатель это тоже переменная. softwarerЧтобы понять исключения, надо просто заставить человек год-другой-третий хорошо попрограммировать без исключений. Не простые учебные задачи, а настоящие. После этого показать ему исключения - и он бросится на них как на манну небесную.Тоже не соглашусь. Причем активно не соглашусь. Я "хорошо попрограммировал" без исключений на протяжении двух десятилетий. И на ЯП с сильной привязкой к исключениям тоже писал (и пишу). Но вот до сих пор ненавижу исключения и считаю их чрезвычайно дурацкой идей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 20:35 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TsoftwarerОт второго фокса у меня осталось смутное воспоминание о чём-то жутком. Скорее всего просто не освоил. В фоксе многое не так "как везде", из-за этого большой порог входа.А у меня от второго Фокса осталось впечатление: "жалкая подделка под Клиппер" :) И да, я знаю что от чего родилось, но так получилось что мое знакомство с xBase началось с Clipper5 и после него FoxPro казался очень недоделанным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 20:44 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White OwlНе соглашусь. Работе с указателями достаточно просто обучить. Достаточно объяснить как переменная хранится в памяти и объяснить что указатель это тоже переменная. Я не пытался обучать ей широкие массы. Видел многих, кому это откровенно не давалось и объяснения не помогали. White OwlТоже не соглашусь. Причем активно не соглашусь. Я "хорошо попрограммировал" без исключений на протяжении двух десятилетий. И на ЯП с сильной привязкой к исключениям тоже писал (и пишу). Но вот до сих пор ненавижу исключения и считаю их чрезвычайно дурацкой идей. Не очень понимаю столь сильные чувства. Язык с исключениями ничуть не мешает писать без них. Ну разве что несколько мешает хакерским приёмам типа выхода за границы массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 20:48 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerWhite OwlНе соглашусь. Работе с указателями достаточно просто обучить. Достаточно объяснить как переменная хранится в памяти и объяснить что указатель это тоже переменная. Я не пытался обучать ей широкие массы. Видел многих, кому это откровенно не давалось и объяснения не помогали.Ну значит не правильно объяснял. У меня такой проблемы не было. softwarerWhite OwlТоже не соглашусь. Причем активно не соглашусь. Я "хорошо попрограммировал" без исключений на протяжении двух десятилетий. И на ЯП с сильной привязкой к исключениям тоже писал (и пишу). Но вот до сих пор ненавижу исключения и считаю их чрезвычайно дурацкой идей. Не очень понимаю столь сильные чувства. Язык с исключениями ничуть не мешает писать без них. Ну разве что несколько мешает хакерским приёмам типа выхода за границы массива.Да, на любом ЯП можно писать в любой парадигме. Но все-же если ты приходишь в существующий проект, то лучше перестроится и начать следовать принятым в проекте соглашениям о стиле и архитектуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:00 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White Owlпринятым в проекте соглашениям о стиле и архитектуре вот об этом задумывался топик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:02 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerЯзык с исключениями ничуть не мешает писать без них помешает не язык, а стандартная библиотека ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:05 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
ИзопропилsoftwarerЯзык с исключениями ничуть не мешает писать без них помешает не язык, а стандартная библиотека Да не особо. Там, где нельзя обойтись без проверок заранее, никто не мешает сделать обёртку, превращающую исключение в код ошибки, и счастливо жить как в каменном веке :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:13 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerТам, где нельзя обойтись без проверок заранее, никто не мешает сделать обёртку, превращающую исключение в код ошибки, живо представил себе обёртку над Java NIO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:24 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerИзопропилпропущено... помешает не язык, а стандартная библиотека Да не особо. Там, где нельзя обойтись без проверок заранее, никто не мешает сделать обёртку, превращающую исключение в код ошибки, и счастливо жить как в каменном веке :)Вообще-то, исключения появились еще в 60-х, практически одновременно с развитием остальных ЯП. Так что твои красочные отсылки к каменному веку слегка не в тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:47 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White OwlВообще-то, исключения появились еще в 60-х, практически одновременно с развитием остальных ЯП. Так что твои красочные отсылки к каменному веку слегка не в тему. Но в практику использования в промышленном коде вошли сравнительно недавно. Равно как и лямбды, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 21:57 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerWhite OwlВообще-то, исключения появились еще в 60-х, практически одновременно с развитием остальных ЯП. Так что твои красочные отсылки к каменному веку слегка не в тему. Но в практику использования в промышленном коде вошли сравнительно недавно. Равно как и лямбды, например.Исключения получили второе дыхание с ростом популярности Java. Причем они (исключения) были втиснуты во множество ЯП и до Java, но практически нигде реально не использовались. Лямбды были изобретены задолго до рождения исключений, Чёрч формализовал их в 1936-ом. А то что лямбды начали набирать популярность только сегодня это тоже вполне показательная вещь. Причем популярность эта ограничена только парой-тройкой ФЯП и добавлением синтаксиса в свеженький стандарт С++... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 22:33 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerв промышленном коде вошли сравнительно недавно. к PL/1 "недавно" - слабо применимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 23:02 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White Owlричем популярность эта ограничена только парой-тройкой ФЯП в c# изрядно популярны, а он вряд ли ФЯП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 23:03 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
White OwlDima Tпропущено... goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.Нет. Языки в которых явно существуют "функции" не позволяют делать goto в другие "функции". А вот языки в которых нету такой сущности - там можно прыгать как вздумается. Примеры: Asm, Basic, Fortran. фортран то зачем туда впутывать? http://dssp.petrsu.ru/~IVK/Fortran_IV/fortran.files/FORTRAN.htm 10 Оператор-функция. 11 Подпрограммы-функции 12 Подпрограммы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 23:48 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Читаю. http://blog.golang.org/error-handling-and-go Хм... насколько я понял создатели решили возвращать статус ошибки как return value из функций в паре с результатом. Эмм.. и сам факт возникновения искусственной ошибки вроде-бе не прерывает течение алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 23:55 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Dima TsoftwarerЯ бы, допустим, предпочёл реализовать этот участок кода через цикл for и без goto, но возмущаться тупостью автора меня не тянет. Думаю потянет, если он привыкнет и начнет все циклы так реализовывать. softwarerОт второго фокса у меня осталось смутное воспоминание о чём-то жутком. Скорее всего просто не освоил. В фоксе многое не так "как везде", из-за этого большой порог входа.. только их дебильная эквивалентность строк, которая не эквивалентность, а включение, но на 698 странице руководства описана опция как сделать её эквивалентность - загонит в гроб заставляя работать лишних пять часов ночью. Нафиг надо в туда входить. За это время можно войти в сишарп, джаву, джава_скрипт и склайт. Порог выхода еще выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 23:59 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
maytonЧитаю. http://blog.golang.org/error-handling-and-go Хм... насколько я понял создатели решили возвращать статус ошибки как return value из функций в паре с результатом. это все равно скучно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 00:00 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Фокс это прям как сопромат. Выучил - можно жениться. К слову... старые бородатые фоксисты любят под водочку хвастать дескыть - ах какой-был классный индекс рашмор и как мы лихо уделали этих урдалаков клиперщиков... Эхехе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 00:03 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... Code Metrics в VS посмотрели? да его и раньше видел. это не тоSonarQube? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 08:35 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingizавторНадежность программного обеспечения. (Software Reliability. Principles and Practices, 1976) [Djv-ZIP] Перевод с английского Ю.Ю. Галимова под редакцией В.Ш. Кауфмана. (Москва: Издательство «Мир». Редакция литературы по математическим наукам, 1980) Не гуглится. Дайте пожалуста ссылку. У меня лет 20 назад была обалденная кнеженция про надёжность софтварных систем. Купил уже подержаную и по году издания вполне могла быть 70 - 80 годов. Классика. Вне времени. Не помню ни авторов ни названия, но идеи тех страниц до сих пор актуалны. Вдруг - она. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 17:57 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
mikron, английский первоисточник @MISC{MAYE, AUTHOR = "G. J. Myers", TITLE = "Software Reability. Principles and Practices", PUBLISHER = "A Whiley - Interscience publication", YEAR = "1976", NUMBER = "", PAGES = "", ADDRES = "New York", NOTE = "" } если отсюда не получится, отпишитесь. фтп работает хорошо, а к веб я два дня не вижу. agp1.hx0.ru/meyers.djvu ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 23:39 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingiz, требует логин и пароль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 00:55 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
mikron... Не гуглится. Дайте пожалуста ссылку. ... какой кошмар... http://publ.lib.ru/ARCHIVES/M/MAYERS_Glenford_Dj/_Mayers_G.Dj..html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 10:50 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
boobymikron... Не гуглится. Дайте пожалуста ссылку. ... какой кошмар... http://publ.lib.ru/ARCHIVES/M/MAYERS_Glenford_Dj/_Mayers_G.Dj..html Хм.. из 4 ссылок только одна доступна. Ну вобщем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:08 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
mayton, а так - тоже одна? http://publ.lib.ru/ARCHIVES/M/MAYERS_Glenford_Dj/ там небось сервер лег, от того, что программисты скачивать бросились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:22 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
boobyтам небось сервер лег, от того, что программисты скачивать бросились. Да нет, всё проще. Сервер просто не даёт скачивать больше чем в один поток, а коллега, небось, врубил все четыре одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:23 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarer, ну, бывают еще на приемном прокси установлены ограничения на размер скачиваемого файла для пользователя имярек. 19 мб не всякая контора разрешает скачивать без контроля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:25 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
maytonboobyпропущено... какой кошмар... http://publ.lib.ru/ARCHIVES/M/MAYERS_Glenford_Dj/_Mayers_G.Dj..html Хм.. из 4 ссылок только одна доступна. Ну вобщем спасибо. они периодически глючат, но 3 три скачал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:28 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Так тихо! Никто не кликает! Я качаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:28 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Всё. Второй том Маерса есть. Можете качать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 12:41 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingizанглийский первоисточник @MISC{MAYE, AUTHOR = "G. J. Myers", TITLE = "Software Reability. Principles and Practices", PUBLISHER = "A Whiley - Interscience publication", YEAR = "1976", NUMBER = "", PAGES = "", ADDRES = "New York", NOTE = "" } если отсюда не получится, отпишитесь. фтп работает хорошо, а к веб я два дня не вижу. agp1.hx0.ru/meyers.djvu Она. Большое человеческое Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 23:23 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
boobymikron... Не гуглится. Дайте пожалуста ссылку. ... какой кошмар... http://publ.lib.ru/ARCHIVES/M/MAYERS_Glenford_Dj/_Mayers_G.Dj..html И вам большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 23:25 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
mikron, а что там особенно нравится, если не секрет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2015, 21:03 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
у меня со стола на работе эту книжку один хороший человек взял почитать. В 84 году наверно. В 2006, видимо, купил за полтора доллара на амазоне английский вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2015, 21:04 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
tchingiz, Ещё раз перелистал Майерса 'Надежность программного обеспечения.' Забавно то, что и по прошествии 40 лет многие темы до сих пор актуальны и моё мнение, книгу надо давать сегодняшним выпускникам ВУЗов как красную таблетку для возвращения к реальности. Сменились языки программирования, парадигмы, архитектура систем. Некоторые аспекты обеспечения надёжности ПО уже имеют достаточные решения, но постоянно растущая сложность самого ПО всё так-же делает актуальным тему его надёжности. Интересно так-же что несмотря на все рекомендации производимой со временем код не стал лучше. *А кода мне достаётся читать достаточно.* Другими словами сложность ПО плохо поддаётся контролю. Другой интересный момент: большинство рекомендации (технических как и организационных) почему - то на деле так остаются рекомендациями а не повседневной практикой. Впечатление такое что их исполнение для бизнеса просто неоправданная роскошь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 15:07 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
mikronЗабавно то, что и по прошествии 40 лет многие темы до сих пор актуальны Это как раз не удивительно. Забавно то, что книги сорокалетней давности куда лучше тех, которые выпускаются сейчас. Забавно то, что читая многие современные книги, причём имеющие неплохую репутацию в своих средах - ну того же Брюса Эккеля как очень яркий вариант - видно, как он делает серьёзные ошибки именно потому, что не явно не читал этих "дневних мамонтов". Забавно то, что основная причина не давать современным программистам те книги - это то, что многие их просто не поймут. Те книги написаны для более интеллектуальных людей, а сегодняшний уровень - читайте про паттерны и старательно бейте лбы, на большее вы всё равно не годитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 17:01 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
В дополнение к последним постам попытаюсь проанализировать как могу проблему надёжности ПО. Не являясь аналитиком, постараюсь объяснить максимально просто. Все в курсе, что в спорте индивидуально обыграть двух соперников часто легче, чем одного? Потому что оба страхуют и полагаются друг на друга, уделяя внимание не только действиям соперника, но и совместным действиям с напарником. Профессионалы знают об этом и стремятся минимизировать недостатки за счёт собственного опыта, но проблема надёжности остаётся, потому что игровое поле одно для всех . И если в спортивных играх такие взаимодействия придают спонтанность и зрелищность , азарт и удовольствие, за счёт понижения надёжности (какой % или КПД реализации считается хорошим?), то процесс разработки ПО имеет (как мне кажется) другие качества и приоритеты. Лично я за полную изоляцию участков работ или частей проекта за одним конкретным ответственным человеком, на всех уровнях иерархии проекта. Специалист не должен заниматься чужим кодом вообще, достаточно документации на то, что должен делать код. Согласился или сам взял на себя смелость влезть в чужой код и поменял его? Значит полностью переложил ответственность на себя. Это административный вопрос, до росписи в журнале за подобные действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 17:33 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Мне кажется надёжное ПО - это надёжный стек. К примеру ОС надёжно обеспечивает запуск демонов. Детектирует их сбой. Обеспечивает повторный пуск демона в случае отсутствия hearbeat. Ведёт учёт сбоев. Когда сбоев за интервал времени превышает какое-то число - останавливает демон и уведомляет пользователя (администратора сервера). Почему я это перечисляю. Потому-что видел немалое число процессов которые должны были быть написаны так. Но тем не менее этот паттерн был проигнорирован. Само прикладное "надёжное ПО" должно состоять из нескольких изолированных компонент. Взаимодействующих по IPC. Каждая компонента в соотв. с принципом SOLID должна использовать абстракции для обеспечения взаимодействия. Должен быть "главный компонент" который позволяет делать "горячую замену" любых других компонент приложения на ходу. +Там мониторинг. Логгирование. Тонкая диагностика внутренних состояний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 17:39 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциВсе в курсе, что в спорте индивидуально обыграть двух соперников часто легче, чем одного? Если они слабы (точнее - плохо обучены действовать в такой ситуации). бухалтер фантоцциЛично я за полную изоляцию участков работ или частей проекта за одним конкретным ответственным человеком, на всех уровнях иерархии проекта. Это можно понять разными способами. Если речь идёт о том, что у любой задачи, процесса итп должен быть один чётко определённый человек, который за неё отвечает - полностью согласен. Если речь о том, что каждый должен плотно сидеть задницей на своей куче - полностью не согласен. То и другое могу аргументировать подробнее. бухалтер фантоцциСпециалист не должен заниматься чужим кодом вообще, Как и "работает - не трогай", это хорошее правило для ламера, но совершенно никудышное - для качественной разработки. бухалтер фантоцциСогласился или сам взял на себя смелость влезть в чужой код и поменял его? Значит полностью переложил ответственность на себя. Полностью согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 13:56 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
maytonМне кажется надёжное ПО - это надёжный стек. Думаю, в этом больше неправды, чем правды. Надёжный стек вовсе не гарантирует надёжности ПО, а надёжное ПО вовсе не обязано опираться на некий стек (хотя, конечно, всегда можно взять некоторые части и объявить их надёжным стеком). Я бы сказал так. ПО состоит из набора компонент разной надёжности. Суть построения надёжного ПО в том, чтобы с помощью сравнительно скромного набора "особо надёжных решений" обеспечить достаточно высокую надёжность комплекса в целом. maytonСамо прикладное "надёжное ПО" должно состоять из нескольких изолированных компонент. Взаимодействующих по IPC. Каждая компонента в соотв. с принципом SOLID должна использовать абстракции для обеспечения взаимодействия. Это уже совершенно не обязательно так. Говорить, так это или нет, можно только после анализа конкретной задачи и конкретного понимания надёжности для неё. maytonДолжен быть "главный компонент" который позволяет делать "горячую замену" любых других компонент приложения на ходу. А это тем более. Это уже вопрос бесперебойности обслуживания, безусловно, важный, но к надёжности прямого отношения не имеющий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 14:03 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerА это тем более. Это уже вопрос бесперебойности обслуживания, безусловно, важный, но к надёжности прямого отношения не имеющий. Отчасти согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 15:13 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerчитайте про паттерны и старательно бейте лбы, на большее вы всё равно не годитесь. Вот не понятен мне профит от использования паттернов. Скорее всего привык вести разработку из понятия library. Вот возьмем к примеру MSDN. Она ведь не на методологии "паттерн", а libraries. Каждая из библиотек обеспечивает возможность работы с сетью, ... Если рассматривать паттерн как костяк /готовый алгоритм или подход/ для решения тех или иных задач, то тогда как в совокупности использовать разные паттерн для решения конкретной задачи? Или к примеру разрабатываю какой-либо протокол? Зачем мне голову ломать как подобрать подходящий паттерн, а потом еще додумывать как в него "вписаться"? PS: Вообщем для меня паттерн - это ни как не код и алгоритм, а скорее "абстрактный" алгоритм в который иногда полезно заглянуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 16:05 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Владимир2012, это чтоб собеседование прошёл... Да не парься. Я-бы задавал более синьорный вопрос. - Когда паттерн реально НЕ-нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 16:11 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Владимир2012PS: Вообщем для меня паттерн - это ни как не код и алгоритм, а скорее "абстрактный" алгоритм в который иногда полезно заглянуть. Cамый правильный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 16:37 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Владимир2012Вот не понятен мне профит от использования паттернов. Скорее всего привык вести разработку из понятия library. Это несколько ортогональные вещи. С позиции "адвоката паттернов" я бы ответил Вам примерно так: рассмотрите инженера-механика. У него есть в распоряжении паттерны "рычаг", "зубчатая передача" итп., и он где-то прямо их использует, где-то творчески приспосабливает, где-то рожает идею на их основе, чтобы в итоге спроектировать своё решение. Владимир2012Зачем мне голову ломать как подобрать подходящий паттерн, а потом еще додумывать как в него "вписаться"? Этот вопрос означает, что Вы смотрите не тот набор паттернов. Если Вы разрабатываете протокол, то Вам, наверное, пригодятся паттерны типа "асинхронный обмен", "подтверждение корректности контрольными суммами" итп. Владимир2012PS: Вообщем для меня паттерн - это ни как не код и алгоритм, а скорее "абстрактный" алгоритм в который иногда полезно заглянуть. Имхо, правильно. Но хватает разработчиков, которые предпочитают действовать не "головой", а "по инструкции". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 17:43 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarerбухалтер фантоцциВсе в курсе, что в спорте индивидуально обыграть двух соперников часто легче, чем одного? Если они слабы (точнее - плохо обучены действовать в такой ситуации). Если игровое поле одно на всех - постоянно возникают такие ситуации, что мы и наблюдаем, например, в футболе - посмотрите на кучу "везения" и ошибок при игре топ-игроков в топ-командах. Для зрелищности это плюс, для разработки минус, потому что люди не машины, Для хорошей разработки важна творческая составляющая, креативность и нестандартный взгляд, но в случае увеличения количества разработчиков на одной задаче мы получаем увеличение бардака, это не спектакль, а разработка. Чапаев говорил "одна голова хорошо, а две хуже". softwarerбухалтер фантоцциЛично я за полную изоляцию участков работ или частей проекта за одним конкретным ответственным человеком, на всех уровнях иерархии проекта. Это можно понять разными способами. Если речь идёт о том, что у любой задачи, процесса итп должен быть один чётко определённый человек, который за неё отвечает - полностью согласен. Если речь о том, что каждый должен плотно сидеть задницей на своей куче - полностью не согласен. То и другое могу аргументировать подробнее. У каждой задачи должен быть один ответственный исполнитель. Лезть в чужой код, когда коллега заболел или занят, нельзя, нужно его ждать. Иначе неизбежен избыточный код, его усложнение или неоправданное упрощение, и путаница. Если есть общие дресс-правила кодирования, значит это тупое кодирование, а не разработка, тогда нужен как минимум один разработчик (алгоритмист или как он там называется) отвечающий за разработку (но не за кодирование). softwarerбухалтер фантоцциСпециалист не должен заниматься чужим кодом вообще, Как и "работает - не трогай", это хорошее правило для ламера, но совершенно никудышное - для качественной разработки. По-моему, качественная разработка как раз должна максимально ограничивать количество людей, работающих над одним кодом, в идеале - один человек. Постоянная доработка одного инструмента, вместо создания нового, со временем приводит к потере качества. Это моё личное мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 00:14 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциЧапаев говорил "одна голова хорошо, а две хуже" Тот же Чапаев командовал "Петька, затопи печку (сообрази ужин, сбегай за водкой)", а не пытался сделать всё сам. бухалтер фантоцциЛезть в чужой код, когда коллега заболел или занят, нельзя, нужно его ждать. Когда Петька болел, Чапаев не ужинал, ждал его выздоровления? бухалтер фантоцциИначе неизбежен избыточный код, его усложнение или неоправданное упрощение, Неизбежен ли - большой вопрос, но это неважно. Поскольку в этом случае неизбежны принципиально большие проблемы. бухалтер фантоцциПо-моему, качественная разработка как раз должна максимально ограничивать количество людей, работающих над одним кодом, в идеале - один человек. В первую очередь, "система, надёжность которой определяется надёжностью человека - ненадёжна". Таким ограничением Вы скорее гарантируете некачественную разработку. А вообще - целью разработки является создание продукта. Целью качественной разработки - создание качественного продукта. Рассмотрите примеры из жизни и наложите на них свой подход. Фильм должен снимать один оператор. Пахать поле должен один комбайнер. Если полковник заболел, его солдаты вместе с противником должны подождать, пока он не выздоровеет. История человечества вполне убедительно доказала, что в создании продукта описанный Вами подход уступает промышленному. Ваш подход предпочтителен в исследовательской деятельности, а не в производственной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 13:59 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Я-бы сказал что в творческой деятельности. В музыке. Литературе и живописи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 15:11 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Творческая деятельность - очень абстрактное и размазанное понятие. Его применение в данном случае запутывает вопрос, поскольку даёт возможность притягивать те аспекты творческой деятельности, какие удобно, чихая на наличие остальных. Скажем, создание театрального спектакля - творческая деятельность? Думаю, Вы согласитесь что да. А думаете ли Вы, что его выпускают методом коллеги Фантоцци? Уверяю, строго наоборот. В небольших постановках есть один-два человека, без которых работать становится бессмысленно, в больших - ни одного. Вон, в прошлом году солист "Призрака оперы" схватил жесточайшую ангину за считанные дни до премьеры. Думаете, побежали снимать афиши и откладывать спектакли? А создание самолёта - творческая деятельность? Ну так представьте себе, как Туполев рассказывает Сталину, что разработка затянулась на лишние полгода из-за того, что конструктор левого закрылка сломал ногу и все ждали, пока он выйдет из больницы. Живопись, говорите? Ну так посмотрите, каким образом некто Рубенс поставил на поток изготовление парадных портретов той орды великих-князей-левого-пня, которые раздирали Европу той поры. И так далее, и так далее, и так далее. В любой деятельности, подразумевающей выпуск продукта, вводятся и необходимы технология, организация и прочее, в частности - заменяемость максимального количества участников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 15:32 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Полностью согласен. Даже добавлю что в пром-дизайне и академическом исскусстве сущесвтуют паттерны разделения полотна на части, сечения, контуры e.t.c. всё что позволяет быть картине хорошей с точки зрения метрик. Это помогает творческому процессу избежать явных ошибок. Но полностью его не заменяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 15:36 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
softwarer, Думаю, что про оператора ты малек загнул. В качественно снятом фильме оператор вообще ничего не снимает, по крайней мере - своими руками. Если уж об архитектуре, то оператор - не снимальщик фильма, а архитектор съемок. Именно поэтому в хорошем фильме не может быть операторов во множественном числе. И к камере собственными пальцами у него есть право прикасаться, но почти всегда это не его обязанность, даже если он заболел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2015, 23:07 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциУ каждой задачи должен быть один ответственный исполнитель. Лезть в чужой код, когда коллега заболел или занят, нельзя, нужно его ждать. Иначе неизбежен избыточный код, его усложнение или неоправданное упрощение, и путаница. Если есть общие дресс-правила кодирования, значит это тупое кодирование, а не разработка, тогда нужен как минимум один разработчик (алгоритмист или как он там называется) отвечающий за разработку (но не за кодирование). А почему, собственно, туда нельзя лезть? Ведь потому, что сломают, правда? Но то, что код легко ломаем - это тоже показатель того, на сколько хорошо он написан. И , конечно же, показатель того, на сколько другие люди знают систему. Согласен с оратором выше: ламерский принцип. В реальности, это приводит к тому, что разработчики поменялись и ничего не понимают в коде, который нужно менять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2015, 00:51 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
Factorize, Ламерский принцип - это когда что к программисту, который написал код, что к его коду относятся с одинаковым неуважением. Это не значит, что в чужой код нельзя лезть. В любой код можно лезть без уведомления автора. Но лезть в код по причине того, что автор заболел - обыкновенное свинство. Пардон и ламерство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2015, 01:11 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
boobyНо лезть в код по причине того, что автор заболел - обыкновенное свинство. Пардон и ламерство Код принадлежит не человеку а команде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2015, 13:39 |
|
||
|
Какие есть объективные метрики "хорошей архитектуры"?
|
|||
|---|---|---|---|
|
#18+
F#boobyНо лезть в код по причине того, что автор заболел - обыкновенное свинство. Пардон и ламерство Код принадлежит не человеку а команде вообще-то организации в лице её владельца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2015, 14:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340876]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 492ms |

| 0 / 0 |
