…да еще и с обязательной аннотацией типов!
Для выполнения срочного заказа копаюсь в исходниках старого проекта, части которого надеюсь переиспользовать. И приятно, когда видишь объявление вроде:
/*! * Выполнение подписки на сообщения msg_raw_package * всех транспортных агентов. */ void subscribe_to_msg_raw_package( const std::string & agent_name, const direction_state_ptr_vector_t & direction_states ); |
Сразу понимаешь какие типы у аргументов и что возвращается. А то, помнится, приходилось дорабатывать одну маленькую программку на Ruby. Заглянешь в код через год-полтора после последнего изменения и… Куришь потом бамбук :) Какой тип у аргументов, возвращает ли что-нибудь метод? Благо комментарии были.
Справедливости ради, нужно сказать, что с динамически типизированным Ruby была такая особенность – много времени приходилось тратить на восстановление в памяти деталей работы. Зато потом все очень легко было в уме держать. А вот с плюсами ситуация чуть иная – детали довольно быстро восстанавливаются за счет синтаксиса языка. Но потом с ними сложнее – может больше их, может еще чего (проекты на плюсах все-таки посерьезнее рубиновых были).
Тем не менее, лично я спокойнее берусь за доработку старого плюсового кода, чем Ruby-нового. Все-таки подробные аннотации в коде – это очень полезная штука.
Ну и на последок еще одна банальность – пишите комментарии. Чем больше напишите, тем проще будет затем разбираться с кодом. Проверено на себе ;)
PS. Написано под впечатлением от проекта, который был написан и запущен в эксплуатацию 3.5 года назад, а последний баг-фикс в нем был чуть больше года назад. Несмотря на то, что весь код там написал я сам, сейчас он воспринимается полностью как чужой, как будто и не я это делал.
PPS. И еще одно. Доходят до меня слухи, что одним из самых популярных языков программирования сейчас является динамически-типизированный JavaScript. На котором пишут все больше и больше, и даже есть какие-то проекты объемом в сотни тысяч строк (не знаю правда это или нет). Исходя из вышесказанного сочувствую тем, кто лет через надцать будет эту прорву JS-кода сопровождать. С другой стороны, возможно, это будет настоящее золотое дно. Похлеще знаменитой Y2K Problem ;)
1 комментарий:
в то время как языки со статической типизацией жестко сковывают творчество программиста временем компиляции, языки с динамической типизацией, напротив, позволяют совершать ошибки динамично, во время исполнения программы
это предлагаемое мной продолжение известной байки "многозадачные операционные системы позволяют исполнять несколько ошибок одновременно"
Отправить комментарий