medianoche
@medianoche

Это говнокод или норма JS?

Если программист пишет такой JS код:
money = 1500;

var strMoney = money.toString();
var endNum = strMoney.substr(strMoney.length - 1); // последняя цифра числа
var preEndNum = strMoney.slice(strMoney.length - 2, -1); // предпоследняя цифра числа

var moneyName = "рублей";
if (endNum == 1 && preEndNum != 1) {
	moneyName = "рубль";
} else if (endNum >= 2 && endNum <=4 && preEndNum != 1) {
	moneyName = "рубля";
}

1. То, что можно сказать о качестве его работы? Это говнокод и норма?
2. Если программист заморачивается такими вещами, вместо того чтобы выводить «руб.», то это характеризует его с положительной или отрицательной стороны?
  • Вопрос задан
  • 2175 просмотров
Решения вопроса 1
printf
@printf
Ем детей.
1. код плохой, я на кодревью отправляю переписывать такое
2. начинание хорошее, надо похвалить (но все равно заставить переделать нормально)
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
voidnugget
@voidnugget
Программист-прагматик
1. Это код человека не удосужившегося поискать любую существующую библиотеку интернационализации, либо ознакомившегося с Intl'ом для которого есть вполне вменяемые полифилы.
2. Это характеризует его как человека который хочет делать "хорошо", а получается "как всегда" из-за недостатка знаний и опыта.
Ответ написан
С алгоритмической точки зрения и некоторых других моментов (например, постоянное использование var) скорее говнокод, чем нет, приемлемого среднего уровня 5 \ 10. Но по этому куску трудно судить о всём коде в целом - он слишком прост.

это характеризует его с положительной или отрицательной стороны?

Если в макете \ ТЗ было четко написано "рублей", то это характеризует его как человека, внимательного к мелочам. Это положительное качество.

P.S. Библиотеки для склонения числительных существительных в данном случае избыточны.
Ответ написан
Neuroware
@Neuroware
Программист в свободное от работы время
1. Если этот код действительно охватывает все вариации сочитаний то код нормальный.
2. Зависит от того нужно ли это было выводить, если дизайнер не оставил лишнего места для дополнительный "лей", то это может испортить вид страницы.
Ответ написан
IonDen
@IonDen
JavaScript developer. IonDen.com
А ведь мог просто написать "руб." ) так что сойдет.
Ответ написан
Комментировать
OlegTar
@OlegTar
программист .NET, Javascript, Perl
1. Не говнокод (я прогнал тесты, и всё проходит), но я бы переписал на проверку остатка от деления, а не на проверку цифр в числе.
2. Положительно, внимателен к мелочам
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы