Про живое и мёртвое
Apr. 27th, 2012 03:25 pmResourceRepositoryManager 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, какая инженерия и конвейер, если хитромудрейшие из программистов не в состоянии писать живой код.
Ладно, в последнее время чего-то слишком много про программизм. Сейчас будут картинки.
no subject
Date: 2012-04-27 03:48 pm (UTC)если бы все эти вкусности и правильности поддерживались IDE?
no subject
Date: 2012-04-27 04:37 pm (UTC)В последнем можно форматирование под себя настроить и блоки схлопвыть, но практика показывает, удобнее, когда все свистелки и перделки просто отключены.
no subject
Date: 2012-04-30 07:35 am (UTC)no subject
Date: 2012-04-27 09:15 pm (UTC){
a,
b,
c,
}
no subject
Date: 2012-04-28 03:35 am (UTC)no subject
Date: 2012-04-28 11:37 am (UTC)int I[] = { 1, 2, 3, };
Но он слегка передёргивает, топикстартер-то говорил о списке аргументов функции.
no subject
Date: 2012-04-28 11:42 am (UTC)Разве что кроме использование подлых языков, типа JavaScript, где компилятор, не найдя запятую в конце строки, решает, что программист дебил, и сам ставит точку с запятой.
no subject
Date: 2012-04-28 12:00 pm (UTC)Но моё замечание касалось того, что позволяют и чего не позволяют конкретные языки. С++ позволяет запятую в конце списка инициализации массива, но не позволяет - в конце списка параметров функции. И я даже боюсь гадать, какие именно тараканы водятся в головах авторов этого языка и на каких граблях им довелось поплясать в процессе приобретения опыта.
no subject
Date: 2012-04-30 02:42 pm (UTC)no subject
Date: 2012-04-28 06:22 am (UTC)+ а
, а
no subject
Date: 2012-04-30 02:45 pm (UTC)no subject
Date: 2012-04-30 04:25 pm (UTC)Код немного отличается от книги и читают его по одной координате
no subject
Date: 2012-04-28 11:33 am (UTC)no subject
Date: 2012-04-30 02:44 pm (UTC)no subject
Date: 2012-04-30 02:59 pm (UTC)no subject
Date: 2012-04-28 11:29 am (UTC)no subject
Date: 2012-04-28 11:37 am (UTC)А так, всё познаётся на опыте.
no subject
Date: 2012-04-28 11:51 am (UTC)К сожалению сколь угодно широкий экран неспособен повлиять на ограничения моего мозга на количество одновременно осознаваемых параметров. Причём характер форматирования в примере показывает, что не только моего. :)
no subject
Date: 2012-04-28 12:05 pm (UTC)