Подробнее
Видишь это? Здесь граница для 80 символов в строке. Лучше её не пересекать. *сиОор* *шоор* .. I , вха*|С риЫ ¡с *оиООр* W'/irt' extends •"piemen ts Anything anything = new AnythingO; throvAJS ArraylndexOutOfBoundsExce THEJENKlNSCOMIC
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор
Еще на тему
Как выглядело бы решение простой задачки FizzBuzz в энтерпрайзе https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
Куча говнокода, который делает ровным счётом нихуя, просто потому, что дебилы начитались книжек, но голову включить забыли.
я нихуя непоняль
ну и кроме того куча всяких разнообразных модификаторов, которые в других языках заменяет синтаксический сахар, либо они опциональны, либо отсуствуют вообще.
то есть там, где в js жизнь уже заканчивается, в жабе и c# она только начинается,
потому что одним только неймспейсом, классом и методом ты отступаешь 12 пробелов от начала строки.
а потом пишешь DefaultFizzBuzzUpperLimitParameter defaultFizzBuzzUpperLimitParameter = new DefaultFizzBuzzUpperLimitParameter(new NumberIsMultipleOfAnotherNumberVerifier());
А для длиннострокофобов придумали правила переноса строк, которые поддерживаются на уровне ИДЕ автоматически.
в длинных названиях нет ничего плохого, класс может служить только источником метаданных или отражать такое же длинное имя репозитория (почему у репозитория настолько длинное имя - это уже другой вопрос).
var a = DoSomeMethod();
И ты такой - а что это за переменная, какого ора типа, что она умеет?
Ненавижу var, блять
Вообще весь этот сахар не супер необходим, я бы больше хотел видеть единый стиль написания кода хоть с var, хоть без него. В таком случае быстро привыкаешь писать по единому шаблону и не занимаешься "наведение красоты".
Ну а назначение должно быть понятно из самой функции и названия переменной (благо можно переобъявлять затирающую переменную с тем же названием): «let render = RenderActor::new(device); render.rebuild_queue();», в случае явного указания один раз продублируется RenderActor, который там и так в названии переменной и структуры, а rebuild_queue как был от неявного типа, так и остался. Некоторые языки (вроде Scala) позволяют даже скрывать частично описание типов функций (в т.ч. выходных нерекурсивных), в отличие от того же раста, где свободные замыкания требуют типов. А иногда тип назвать слишком сложно — ради этого в расте выдумали «impl» (нарп.: … ->impl Iterator<Item = u32>, т.к. реальный тип будет двадцатиэтажным с ZipIterator, ChainIterator, ReverseIterator…).
Я стал себя старого (тот, который избегал auto) видеть старпёром.
Например ты в 300 раз берешь высоту вьюхи
let height = view.bounds.height
Любой кто работал c UIKit (там определены все эти View с bound и прочее) прекрасно знает что все измерения там это CGFloat, так зачем об этом писать?
С другой стороны у нас есть возможность явно указать тип, возвращаясь к примеру выше это:
let height: CGFloat = view.bounds.height
или
let height = view.bounds.height as CGFloat
И мне нравится эта вариативность! Здорово когда создатели языка не относятся к тебе как к обезьяне за компом, и дать возможность писать в любом стиле.
Ненавижу кодерастов, блять, понабрали со stackoverflow, даже не смотрят, что делают и возвращают методы, которые используют...
Ибо название должно быть:
говорящим(потому что иначе нахуй оно?)
коротким(потому что через точку порой писать дохуя и сам же заебешься)
без смехуечков и сокращений, если только сокращения не общепринятые в предметной области(какой-нибудь СНИЛС - да, а ММРСДН - нет, ибо хуй его знает что он там значит)
Ну и перенос строк, да.
ну и на реакторе просто традиционно не любят жабу.
хотя лично я против таких изъебов
Ну и раз взялся писать запросы именами метода, так не бросать же. А CI исключение прописать, что мол имя метода длиннее максимального количества сиволов, тут мои полномочия всё.
стайлгайд от собственно гугла, например, на эту тему вообще не заикается. и правильно.
хотя, если вы там "заебываетесь дохуя писать", то, возможно, у вас эта проблема с длинной имен стоит действительно остро.
а именования в примере вполне себе адекватные (насколько они могут быть такими для FizzBuzz на манер энтерпрайз) - говорящие, в меру короткие, без смехуечков и сокращений. тут проблема в том, что это изначально не должно быть отдельным классом - этот класс это две-три строки и они не должны были подлежать декомпозиции, а не в их длине имен того, что в результате её получилось.
Что до кодстайла, я обращаюсь скорее к своему опыту, где имена имели предельную длину и ебись как хочешь.
Сначала у тебя есть FizzBuzz. Потом появляется некоторый лимит, он становится BuzzUpperLimit. Потом появляется необходимость его конфигурировать, получается FizzBuzzUpperLimitParameter. Через какое-то время чувак замечает, что параметры часто одни и те же и решает сделать класс DefaultFizzBuzzUpperLimitParameter, чтобы в конструкторе засеттить всё дефолтами и не писать каждый раз одну и ту же портянку с настройками.
Каждый из этих шагов - логичный и понятный. Правило бойскаута "ща я отрефачу всё нахер" рассыпается, сталкиваясь с реальностью "какого хера на задаче оцененную в час ты сидишь второй день"/100500 конфликтов с 547 других разработчиков и невозможность в итоге ничего залить/волшебные слово "Рефлекшн" и "внешняя интеграция".
У меня на проекте сейчас 120 символов, например.
Я щас посмотрел - 120 символов это от края до края. Читать стену такого кода - удовольствие ниже среднего.
В реальной работе нет специальной олимпиады "Запихнуть побольше кода в одну строку", смысл чтобы хорошо читалось. Строки в 120 символов читаются херово. Терминалы в 80 символов изначально сделали не дебилы которые не могли сделать его шире - были, так сказать, определенные причины
> Строки в 120 символов читаются херово.
В итоге почти всегда при вызове функций аргументы на отдельных строках.
Не, я понимаю, что дело личных пристрастий и мощностей машины, но лично мне как-то дико такое...