vit_r: default (Default)
[personal profile] vit_r
[livejournal.com profile] ivan_gandhi пишет в своём блоге вот такое

ResourceRepositoryManager rrm = new ResourceRepositoryManagerImpl(resourceRepository, databaseManagementFuckingShit, remoteAccessRemoteControl, remoteAccessLocalControl, localAccessRemoteControl, localAccessLocalControl, userId, customerId, itemIdContainerImpl)


После чего ужасно страдает по поводу непонятности, мутности и некрасивости, воспевая хвалу функциональщине. Хотя и ребёнку понятно, что серебряные пули не лучше свинцовых, просто одна сложность заменяется другой.

Да, так учат писать Гугл и Микрософт (у них дофига бабла), так учат писать авторы умных книжек, код которых можно использовать, если к нему прикреплено две введения и три страницы разбора, так пишут гуру новейших языков, чтобы удивить и поразить начинающих адептов, так повторяют за ними миллионы леммингов, которым главное скормить код компилятору, чтоб потом ухватиться за очередную «сложную задачу»

Дюжину лет назад я начал писать «The Dragon of The Source Code». Кое-кто даже видел черновик. Потом я забросил, потому как это оказалось никому не нужно. Людям нужна магия. И, желательно, с очень дорогим тулом.

Я не буду сейчас долго расписывать, просто промышленный код должен быть живым. То есть, стоящее в исходнике - это не результат работы программиста, а промежуточное состояние. Код будут читать, смотреть в дебаггере, проверять, добавлять, исправлять и портить. При этом, код должен не учить (как препарат патологоанатома) и не поражать (как памятник), а сообщать, указывать, сопротивляться ошибкам, и выживать вмешательство идиотов.

Та же строчка в промышленной разработке выглядит вот так
ResourceRepositoryManager rrm 
  = new ResourceRepositoryManagerImpl(  
                                                // 
           resource_repository                  //
         , database_management_fucking_shit     //FIXME: does not work 4 test
                                                //       if customerId == 0 

                                                //== Remote
         , remote_access_remote_control         // 
         , remote_access_local_control          //

                                                //== Local
         , local_access_remote_control          // 
         , local_access_local_control           //       4 test or 4 production

                                                //== IDs
         , user_ID                              // 
         , customer_ID                          //     ! may be 0

                                                // WTF?
         , item_ID_Container_Impl               //     !? optional
         ) ; 


Я не буду тут объяснять, почему. Что-то просто для красоты, вроде //== У чего-то есть важные причины. Та же запятая в начале не просто маркирует колонку, продолжает блок и останавливает взгляд, но и позволяет с наименьшей болезненностью произвести манипуляции вроде
         //TEST  , item_ID_Container_Impl               //     !? optional


Какие процессы, какие lean и kanaban, какая инженерия и конвейер, если хитромудрейшие из программистов не в состоянии писать живой код.

Ладно, в последнее время чего-то слишком много про программизм. Сейчас будут картинки.
(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

Profile

vit_r: default (Default)
vit_r

February 2026

S M T W T F S
12 34 567
8 91011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 05:40 pm
Powered by Dreamwidth Studios