Можно и за шиворот себе насрать, стоя на голове.
Другое дело, что если ты один живешь - до дело хозяйское...
Если же то, что ты
Вот кусочек кода от одного писателя, который был два года назад под моим крылом, и мое воспитание его как программиста чуть не стоило мне потери рабочего места.
В итоге, было принято решение - он пишет рабочий код? Рабочий. Ну и отстань от него. Вот тебе новый проект, набирай команду.
Свернутый текст
if (typeNamesProp != null) {
final String[] themes = typeNamesProp.split(";");
for (final String theme : themes) {
final String[] kv = theme.split(":");
if (kv.length == 2) {
final String typeName = kv[0].trim();
final boolean isClip = "video".equals(typeName);
final boolean isAsset = !isClip && !"data".equals(typeName);
final String[] extensions = kv[1].split(",");
for (String extension : extensions) {
extension = extension.trim();
if (isClip) {
if (CLIP_FILE_TYPES.contains(extension)) {
if (!typeName.equals(TYPENAMES.get(extension))) {
TYPENAMES.put(extension, typeName);
LOGGER.info("Asset and clip typenames: " + TYPENAMES);
}
}
else {
CLIP_FILE_TYPES.add(extension);
TYPENAMES.put(extension, typeName);
LOGGER.info("Clip file types: " + CLIP_FILE_TYPES);
LOGGER.info("Asset and clip typenames: " + TYPENAMES);
}
}
else if (isAsset) {
if (ASSET_FILE_TYPES.contains(extension)) {
if (!typeName.equals(TYPENAMES.get(extension))) {
TYPENAMES.put(extension, typeName);
LOGGER.info("Asset and clip typenames: " + TYPENAMES);
}
}
else {
ASSET_FILE_TYPES.add(extension);
TYPENAMES.put(extension, typeName);
LOGGER.info("Asset file types: " + ASSET_FILE_TYPES);
LOGGER.info("Asset and clip typenames: " + TYPENAMES);
}
}
}
}
}
}
А на днях мне прилетел баг-тикет по его участку, т.к. он в отпуске, а нужно срочно, прям вчера, т.к. это продакшен и деньги.
И я сказал: знаете что, вы вот мне тогда не дали его добить, а теперь просите, чтобы я его говно разгребал?
Ну надо разгребать, разгребу, только это будет долго. Нет. ДОЛГО. Закончу как раз к его выходу из отпуска.
И ООП тут не причем.
Можно написать нормальных процедур, начинающехся с getByType(), но не писать монстроические методы по 2000 строк с 10 вложенными if ... else
Хотя вот, хорошо освежает мозги golang
Я не так давно им занялся.
И там просто-напросто отсутсвует куча, на первый взгляд, привычных и нужных вещей.
первая реакция - WTF???
Потом думаешь, что в гугле сидят все же не дебилы, и раз они так сделали, то была на то причина.
Лезешь в доки, на форум разработчиков языка, и там вполне логичные объяснения, например, почему они не реализовали в языке никакого другого цикла, помимо for
twin посмотри на язык, тебе понравится.
_____________
[продано копирайтерам]