Красивый код

Feb 06, 2013 02:17

Помнится был в ксореде один забавный случай. Пришёл чувак на собеседование. Пособеседовали его, неплохой парень. Взял его один из техлидов и повёл рассказывать про специфику работы. И вот рассказывая парню про то, что требуется от кандидата, техлид заикнулся про "красивый код ( Read more... )

code, dev

Leave a comment

Comments 14

ext_918488 February 5 2013, 20:33:53 UTC
Гнустный от слова "гнусть"?

Reply

ystrot February 6 2013, 06:12:04 UTC
Спасибо, поправил.

Reply


creaturen2 February 6 2013, 00:05:11 UTC
А вот интересно, что ты привел два фреймворка. Я подумал и смог бы сказать о паре публичных либ и паре либ внутри проекта.
А вот законченные проекты в целом, которые не либы, которые работают и как раз решают бизнес-задачи -- таких примеров у меня нет.
Думаю, это потому, что фреймворки и либы как раз пишутся с целью сделать "красиво". Либо вообще с нуля, либо выделяются как часть большого проекта, которую удалось придумать, как сделать "красиво". Так что это не очень-то честное соревнование.

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

Reply

ystrot February 6 2013, 06:27:06 UTC
Я как раз в начале оговорился, что задача сделать красиво стоит очень редко и как правило встречается в тех самых публичных либах. Тем не менее, что такое либа? Это переиспользуевый модуль. Любая серьёзная законченная программа состоит из множества таких модулей. Другое дело, что делать из каждого модуля публичную либу - просто трата времени. Хотя если у программиста за спиной нет ни одного такого красового модуля - это знак.

Со вторым аргументом я тоже согласен - красота познаётся при использовании. Если тебе в начале кажется, что либа прекрасна, но ни для чего дельного её использовать не получается - красота там явно кривая.

Reply


realill February 6 2013, 03:19:15 UTC
Красивый код, это когда ты пишешь долго большую систему. И в один прекрасный день ты понимаешь что тебе нужно концептуально что-то переписать. И переписываешь в течении суток.

Reply

ystrot February 6 2013, 06:36:12 UTC
Ты почти прав. На самом деле красивый код - это когда ты пишешь большую систему, а в один прекрасный день кто-то другой может её быстро расширить. Есть один чувак, который пишет супер-быстро супер-расширяемый код. Вот только читать этот код кроме него самого никто не умеет. Назвать такой код красивым как-то язык не поворачивается.

Reply


localstorm February 6 2013, 09:07:32 UTC
Я не могу такого показать, но есть пара приложений, где я лично написал красивый, чистый и очень надежный код, который работает на продакшене уже год и ни разу не было ни одной проблемы. Как правило это получается в ситуации, когда с оценкой немного переборщили и есть время все допилить и порефакторить

Reply

ystrot February 6 2013, 14:11:45 UTC
Доступен ли твой код публично - это тоже вопрос личных предпочтений. Мне например сильно нравится мысль, что можно похвастаться ссылкой на свой красивый код. И если бы на работе все проекты были закрыты, я бы колбасил по вечерам свои опенсорсные проекты (чем я часто и занимаюсь =) ). Кому-то больше льстит понимание, что на его приложениях крутятся данных гиганских компаний. Это тоже круто)

Reply

localstorm February 6 2013, 14:18:47 UTC
>я бы колбасил по вечерам свои опенсорсные проекты (чем я часто и занимаюсь =) )

Возможно я приду к этому позже :)

Reply


tonsky February 6 2013, 13:12:33 UTC
Ооо, да это сам Неуловимый Джо. Красивый Код™ можно сравнить, пожалуй, с Интуитивно Понятным Интерфейсом™. Тоже никто не знает что это такое, но все говорят. Кажется, что само определение уже интуитивно понятно, поэтому можно не уточнять его, а начинать делать выводы.

Что такое Красивый Код? Некоторым кажется, что это когда нет висячих пробелов. Или ты вот привел AnnotationsManager. Для меня лично и само слово Manager, и вот такие «комменты»

/**
* Remove annotation
* @param annotation
*/
public void removeAnnotation(Annotation annotation);- это уже Code Smell ( ... )

Reply

ystrot February 6 2013, 14:53:17 UTC
Начнём с твоего примера моего кода. Да, это действительно Code Smell и именно поэтому я изучаю и пишу не только на джаве. Но тем не менее на джаве надо писать именно так, потому что именно этого от неё ожидают. Потому что clarity is better than cleverness. Когда я вижу плагин к эклипсе, который управляет какими-то ресурсами, я ожидаю, что там будет Manager, Provider, Listener, Support и т.д. Для меня это маркер, который позволяет не заглядывая в класс понять, зачем он нужен. То же самое с джавадоками. Так принято. Это более читаемо ( ... )

Reply

tonsky February 6 2013, 15:19:28 UTC
> Аналогично с кодом. Один мой друг восхищается красотой Tapestry. Надо ли мне узнавать насколько оно расширяемо, устойчиво к ошибкам и достаточно ли быстро это всё работает, чтобы понять о чём говорит мой друг?

Ну если языками почесать - не надо конечно. Чем расплывчатее термин, тем горячее спор. В определенной ситуации и состоянии это как раз то, что нужно.

Если же тебе надо выбрать веб-фреймворк, то фраза «он очень красивый» ничего не говорит и только злит. Может, ему просто понравилось, что каждый класс в своей папочке лежит, а остальное он даже не смотрел. Эпитеты дешевы. Вот тут пример того, о чем я говорю (начиная со слов про Redis).

> Общую суть моего поста можно перефразировать так: ок, у каждого своё представление о красоте кода, но есть ли у тебя у самого код, которые соответствует этим представлениям?

Надо было так и написать :)

Reply


Leave a comment

Up