октября 2025 @yegor256 STEVE MCCONNELL «Microsoft обнаруживает около 10–20 дефектов на 1000 строк кода во время внутреннего тестирования и 0.5 дефектов на 1000 строк кода в выпущенном продукте.» —Steve McConnell. Code Complete. Pearson Education, 2004. DOI: 10.5555∕1096143
октября 2025 @yegor256 «Центральный и критический аспект компьютерной проблемы безопасности — это проблема программного обеспечения. Дефекты ПО с последствиями для безопасности — включая ошибки реализации, такие как переполнение буфера, и недостатки проектирования, такие как непоследовательная обработка ошибок — обещают быть с нами годами.» —Gary McGraw. Software Security: Building Security in. Addison-Wesley, 2006. DOI: 10.5555∕1121680
октября 2025 @yegor256 «Чем проще ваше решение, тем лучше вы как разработчик. Большинство разработчиков могут написать код, который работает. Создать код, который работает и настолько прост, насколько это возможно — вот истинный вызов.» —Vladimir Khorikov. KISS Revisited. https: ∕∕enterprisecraftsmanship.com∕posts∕kiss-revisited∕. [Online; accessed 22-09-2024]. Июнь 2015
октября 2025 @yegor256 ROBERT C. MARTIN «Дублирование — это главный враг хорошо спроектированной системы.» —Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education, 2008. DOI: 10.5555∕1388398
октября 2025 @yegor256 MARK SEEMANN «Мне нравится, как метафора садоводства подчеркивает действия, которые борются с беспорядком. Точно так же, как вы должны обрезать и пропалывать сад, вы должны рефакторить и погашать технический долг в вашей кодовой базе.» —Mark Seemann. Code That Fits in Your Head: Heuristics for Software Engineering. Addison-Wesley, 2021
29 октября 2025 @yegor256 CHUN JIE CHONG «С точки зрения качества, мы обнаружили, что LLM генерирует голый код, лишенный конструкций защитного программирования, и обычно более сложный (на строку кода) по сравнению с кодом, написанным человеком. Фаззинг показал, что код, сгенерированный LLM, более склонен к зависаниям и сбоям, чем код, написанный человеком.» —Chun Jie Chong, Zhihao Yao и Iulian Neamtiu. Artificial-Intelligence Generated Code Considered Harmful: A Road Map for Secure and High-Quality Code Generation. 2024. arXiv: 2409.19182 [cs.CR]
29 октября 2025 @yegor256 ALTAF ALLAH ABBASSI «33.54% изученных образцов продемонстрировали множественные неэффективности, указывая на то, что неэффективности в коде, сгенерированном LLM, разнообразны и взаимосвязаны. Наши результаты выявляют критический пробел в способности LLM генерировать корректный, оптимизированный и высококачественный код.» —Altaf Allah Abbassi и др. A Taxonomy of Inefficiencies in LLM-Generated Python Code. 2025. arXiv: 2503.06327 [cs.SE]
29 октября 2025 @yegor256 ADAM ALAMI «Внедрение LLM в социальную систему ревью кода вызывает нарушение присущей социальной динамики процесса и переход ответственности от индивидуальной к коллективной.» —Adam Alami, Victor Vadmand Jensen и Neil A. Ernst. «Accountability in Code Review: The Role of Intrinsic Drivers and the Impact of LLMs». В: ACM Transactions on Software Engineering and Methodology 2025.1 (2025). DOI: 10.1145∕3721127
29 октября 2025 @yegor256 XUANHUA SHI «Стиль кодирования человеческого кода может быть подвержен влиянию LLM: они могут не только отражать существующие нормы, но и тонко изменять их, постепенно подталкивая разработчиков к большему стилистическому соответствию с конвенциями, предпочитаемыми LLM.» —Yuliang Xu и др. code_transformed: The Influence of Large Language Models on Code. 2025. arXiv: 2506.12014 [cs.CL]
27∕45 29 октября 2025 @yegor256 CAITLIN SADOWSKI «Корреляция между размером изменения и качеством ревью признается Google, и разработчикам настоятельно рекомендуется вносить небольшие, инкрементальные изменения (за исключением больших удалений и автоматизированного рефакторинга).» —Caitlin Sadowski и др. «Modern Code Review: A Case Study at Google». В: Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice. 2018, с. 181—190. DOI: 10.1145∕3183519.3183525
28∕45 29 октября 2025 @yegor256 Source: Peter C. Rigby и Christian Bird. «Convergent Contemporary Software Peer Review Practices». В: Proceedings of the 9th Joint Meeting on Foundations of Software Engineering. 2013, с. 202—212. DOI: 10.1145∕2491411.2491444 «Both Android and AMD have a median change size of 44 lines. This median change size is larger than Apache, 25 lines, and Linux, 32 lines, but much smaller than Lucent where the number of non-comment lines changed is 263 lines. Bing, Chrome’s median change is 78 lines and includes 5 files.»
30∕45 29 октября 2025 @yegor256 GORAN PETROVIĆ «Google не применяет принудительно никаких порогов покрытия кода по всей кодовой базе. Проекты (или группы проектов) свободны определять свои собственные пороги и цели. Многие проекты подключаются к централизованной добровольной системе оповещения, которая определяет пять уровней порогов покрытия кода.» —Goran Petrović и др. «Code Coverage at Google». В: Proceedings of the 27th Joint Meeting on ESEC/FSE. 2019. DOI: 10.1145∕3338906.3340459
31∕45 29 октября 2025 @yegor256 Code Coverage Threshold Levels in Google Source: Goran Petrović и др. «Code Coverage at Google». В: Proceedings of the 27th Joint Meeting on ESEC/FSE. 2019. DOI: 10.1145∕3338906.3340459
37∕45 29 октября 2025 @yegor256 Несколько популярных контролёров стиля: • ESLint для JavaScript • Clang-Tidy для C++ • Pylint для Python • Rubocop для Ruby • PHP_CodeSniffer для PHP • rustfmt для Rust • Qulice для Java: Checkstyle + PMD
38∕45 29 октября 2025 @yegor256 Сколько правил в контролёрах стиля: • 690+ в Clang-Tidy (C++) • 550+ в Rubocop (Ruby) • 400+ в PMD (Java) • 130+ в Checkstyle (Java) • 120+ в Pylint (Python) Некоторые/большинство правил не только проверяют стиль, но и находят баги.
39∕45 29 октября 2025 @yegor256 Экзотические контролёры стиля: • Shellcheck для Bash • Hadolint для Dockerfile • markdownlint для Markdown • Checkmake для Makefile • xcop для XML
41∕45 29 октября 2025 @yegor256 Некоторые баги на уровне дизайна: Код ошибки: 1 class Foo { 2 int get_content(char* path) { 3 if cant_read() return -1; 4 ∕∕ do the rest 5 return 0; 6 } 7 } Исключение: 1 class Bar { 2 void storeIt() { 3 if cant_save() 4 throw "Can't save file" 5 ∕∕ do the rest 6 } 7 }
42∕45 29 октября 2025 @yegor256 SIMON WEBER «В ходе исследования было обнаружено, что популярные проекты имеют более объемные README (медиана 2 килобайта против 500 байт). Также 95% популярных проектов имеют непустые README, по сравнению с только 65% непопулярных проектов.» —Simon Weber и Jiebo Luo. «What Makes an Open Source Code Popular on GitHub?» В: Proceedings of the International Conference on Data Mining Workshop. IEEE. 2014, с. 851—855. DOI: 10.1109∕ICDMW.2014.55
45∕45 29 октября 2025 @yegor256 Список литературы [1] Altaf Allah Abbassi и др. A Taxonomy of Inefficiencies in LLM-Generated Python Code. 2025. arXiv: 2503.06327 [cs.SE]. [2] Adam Alami, Victor Vadmand Jensen и Neil A. Ernst. «Accountability in Code Review: The Role of Intrinsic Drivers and the Impact of LLMs». В: ACM Transactions on Software Engineering and Methodology 2025.1 (2025). DOI: 10.1145∕3721127. [3] Chun Jie Chong, Zhihao Yao и Iulian Neamtiu. Artificial-Intelligence Generated Code Considered Harmful: A Road Map for Secure and High-Quality Code Generation. 2024. arXiv: 2409.19182 [cs.CR]. [4] Vladimir Khorikov. KISS Revisited. https:∕∕enterprisecraftsmanship. com∕posts∕kiss-revisited∕. [Online; accessed 22-09-2024]. Июнь 2015. [5] Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education, 2008. DOI: 10.5555∕1388398. [6] Steve McConnell. Code Complete. Pearson Education, 2004. DOI: 10.5555∕1096143. [7] Gary McGraw. Software Security: Building Security in. Addison-Wesley, 2006. DOI: 10.5555∕1121680. [8] Goran Petrović и др. «Code Coverage at Google». В: Proceedings of the 27th Joint Meeting on ESEC/FSE. 2019. DOI: 10.1145∕3338906.3340459. [9] Peter C. Rigby и Christian Bird. «Convergent Contemporary Software Peer Review Practices». В: Proceedings of the 9th Joint Meeting on Foundations of Software Engineering. 2013, с. 202—212. DOI: 10.1145∕2491411.2491444. [10] Caitlin Sadowski и др. «Modern Code Review: A Case Study at Google». В: Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice. 2018, с. 181—190. DOI: 10.1145∕3183519.3183525. [11] Mark Seemann. Code That Fits in Your Head: Heuristics for Software Engineering. Addison-Wesley, 2021. [12] Simon Weber и Jiebo Luo. «What Makes an Open Source Code Popular on GitHub?» В: Proceedings of the International Conference on Data Mining Workshop. IEEE. 2014, с. 851—855. DOI: 10.1109∕ICDMW.2014.55. [13] Yuliang Xu и др. code_transformed: The Influence of Large Language Models on Code. 2025. arXiv: 2506.12014 [cs.CL].