Труд вопреки насмешкам
|
|
1 | |
16 правил качественного программирования от Николая Этюгибосэкю25.02.2020, 20:44. Показов 7607. Ответов 235
Метки нет (Все метки)
Помните, я писал книгу "16 правил хорошего кода"? Вот переработанная ее версия. Теперь упоминается не только качество кода, но и качество его исполнения, меньше привязанность к Мартину (хотя некоторые правила скопированы из старой книги "один к одному") и обновлена информация о возможностях стрелок (в частности, Юноны). Также теперь в книге уже 15 правил, еще шаг - и ее можно будет считать завершенной. Считаю, что как раз эта тема имеет отношение к вопросам начинающих, так как помогает им научиться программировать лучше. Хотя в любом случае модераторы решат сами.
1
|
25.02.2020, 20:44 | |
Ответы с готовыми решениями:
235
16 правил хорошего кода от Николая Этюгибосэкю День Святого Николая 19 декабря - Праздник святого Николая Ошибка в программе с e-olimp 514 Время для Николая |
12512 / 8698 / 1311
Регистрация: 21.01.2016
Сообщений: 32,672
|
|
26.02.2020, 12:56 | 21 |
Вы привели в пример случай, когда производительность является конкурентным преимуществом. Это действительно редкое явление. Это только вы брались за свершения, где такое нужно (массовая обработка данных). В остальных случаях достаточно разумной оптимизации. Т.е. делать упор на читаемость и надёжность, стараясь не гробить производительность.
Есть подозрение, что ещё как возможно. Это вы просто пока не знаете как. Если пользователи - программисты, то им ещё как интересно. Это называется "конструктор по умолчанию". Внезапно, не каждый класс способен такое иметь. С чего бы медленными? И тем не менее, вам подход к разработке именно такой эффект и даёт) Для нас, читающих это, это не плохо)
0
|
Модератор
|
|
26.02.2020, 13:14 | 22 |
Одно другое не заменяет.
Метанит учебник. А те правила - это язык для взаимопонимания между программистами, без которого не возможна коллективная работа и априори создание больших приложений. Добавлено через 3 минуты Это скорее всего пример индивидуальной очень кривой реализации. И изменение там скорее всего в алгоритме (то есть в математике), а не в качестве создаваемого кода. Поэтому к этой теме тот пример не имеет отношения. Изменения в оформлении кода не могут давать разницу в десятки раз. Единицы процентов.
0
|
Труд вопреки насмешкам
|
|
26.02.2020, 13:16 [ТС] | 23 |
Опишу, что делает этот метод. А он производит основной синтаксический анализ потока лексем, превращая его в дерево. При этом он симулирует работу стека вызовов с помощью 11 списков с данными в этом стеке, и на каждом шаге перебирает несколько десятков задач, зависящих от конкретных лексем, выбирая одну из них, и на большинстве шагов симулированная рекурсия двигается вниз (добавляя по элементу в каждый из 11 списков) или вверх (удаляя эти элементы). Попробуйте уместить это в один или несколько методов по 25 строк шириной не больше 80 символов каждая, причем так, чтобы не возникло StackOverflow. Если бы вы попробовали, то не писали бы такое.
0
|
Модератор
|
|
26.02.2020, 13:23 | 24 |
Это значит должно быть лаконично, доходчиво, понятно, не навязчиво и т.д.
Для какого вы пишите свои Правила. Для самого себя? Нет вы их предназначаете для тех кто читал и знает много больше вас (в том числе Framework Design Guidelines), имеет опыт реальной работы, в том числе коллективной. Им не надо начинать рассказывать о программировании с таблицы умножения - иначе просто читать не статнут. Добавлено через 2 минуты Такого не может быть! Значит вы неправильно оформили метод, не разбили его на составляющие и т.п. Не должно быть "Методов Бога". Каждый блок операторов выполняет какую-то функцию. Вынесите их в отдельный метод и снабдите нормальными тегами документации. Добавлено через 2 минуты В том что это не относится к в вашим Правилам. А люди обычно не любят навязчивую рекламу. Следовательно и отношение к вашим Правилам будет близкое к Спаму. Тот же принцип "Единственной ответственности" распространим не только на ООП, но и на хорошие статьи.
0
|
12512 / 8698 / 1311
Регистрация: 21.01.2016
Сообщений: 32,672
|
|
26.02.2020, 13:23 | 25 |
Ну так это ваша "авторская" реализация. Вы себя выше всех поставить решили? Считаете, что раз вы смогли только так сделать, значит иначе оно не делается вообще никак?)))
0
|
Труд вопреки насмешкам
|
|
26.02.2020, 13:25 [ТС] | 26 |
Даже если речь идет о программировании языков программирования (а как еще конечные пользователи могут быть программистами?), одинаково небольшая разница, в какой среде разрабатывался этот язык (если только не интерпретируемый язык на интерпретируемой основе, потому что там потери производительности растут как снежный ком).
Если разбить метод на составляющие, будет StackOverflow.
0
|
Модератор
|
|
26.02.2020, 13:26 | 27 |
Зато очень интересна какая платформа Framework, Core, Standard и её версия.
Если вы пишите о версии Студии, то так и надо конкретизировать. И даже версия Студии порой имеет значение. Во многих учреждениях до сих пор используют 2013 и 2105. И код написанный на 2019 может на них не работать. Ваши же Правила для программистов, а не для пользователей. Так и пишите о их заботах и проблемах.
0
|
Модератор
|
|
26.02.2020, 13:28 | 29 |
Мало читали.
Даже я мало читал, но гораздо больше вас. Но не считаю себя достаточно знающим для рекомендаций действительно профессиональным программистам.
0
|
12512 / 8698 / 1311
Регистрация: 21.01.2016
Сообщений: 32,672
|
|
26.02.2020, 13:36 | 33 |
Не через задницу, например. Видя ваш код "архиватора" у меня нет причин думать, что ваша реализация парсера оптимальна.
Вы этот проект не довели даже до бета-версии. И пилили его изначально на std::string::substring и подобном ужасе. С таким подходом тормозить будет всё. Но проблема ли языка это?
0
|
Модератор
|
|
26.02.2020, 13:39 | 34 |
То есть это опять неизвестная никому кроме вам аббревиатура?
Вы же писали за Драйвера получатся медленными, а "огроменные ИС" на более современных языках писать быстрее в десятки раз .Драйвера писали? Какие у них были проблемы? "Огромные ИС" писали? Что там были за трудности?
0
|
Труд вопреки насмешкам
|
|
26.02.2020, 13:45 [ТС] | 35 |
Сколько вызовов помещаются в стек (который размером 1 МБ)? 500, 1000, 2000? Конструкция "выражение" имеет 40 вложенных друг в друга разновидностей. Несколько десятков вложенных выражений (например, через скобки) - и StackOverflow. При тестировании DCASTF, например, у меня реально такое было.
Добавлено через 4 минуты Драйвера не писал, но знаю общее правило, что драйвера должны быть очень быстрыми, а C++ за счет наслоения абстракций этого не позволяет. А про "огромные ИС" также знаю, что там как раз наслоение абстракций позволяет пользоваться готовыми конструкциями, а не писать все с нуля.
0
|
управление сложностью
|
|||||||
26.02.2020, 13:48 | 36 | ||||||
Добавлено через 2 минуты Походу нас просто кто-то троллит
0
|
Etyuhibosecyu
|
26.02.2020, 13:48
[ТС]
#37
|
Не по теме: Оказывается, ИС - это информационная система, предназначенная для хранения, поиска и обработки информации, если я правильно выловил суть из кучи аббревиатур.
0
|
Модератор
|
|
26.02.2020, 13:49 | 38 |
Надобности не было, насколько помню это регулируемый параметр.
Но это же не значит, что надо использовать вызовы глубиной 40! Из моей практики StackOverflow возникал только при зацикливании в рекурсии.
0
|
Почтальон
|
26.02.2020, 13:52
#39
|
0
|
Модератор
|
|
26.02.2020, 13:53 | 40 |
С++ даже не относится к Net языкам.
И позволят делать программы идентичные Ассемблеру. "Абстракции" используются тогда когда надо сделать код платформонезависимым. Даже для разных процессоров внутри общей архитектуры x86 для одних и тех же действий могут потребоваться разные машинные команды. И без "абстракции" здесь не обойтись. В том числе и на Ассемблере.
0
|
26.02.2020, 13:53 | |
26.02.2020, 13:53 | |
Помогаю со студенческими работами здесь
40
Фон из-за не качественного ИП Выбор качественного смартфона Покупка качественного ноутбука Выбор качественного хостинга ПК для качественного звука, Photoshop Выбор качественного блока питания на 750w Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |