Ostrovsky_Miroslav
@Ostrovsky_Miroslav

Как можно сделать код, что-бы он был красивее?

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

const endMessage = (text: string) => {
	if (text.includes("
") || /^(?:\[club\d+\|.*])/.test(text)) {
		return text;
	}
	let newText = text;
	if (/(?=[^\d])[\wа-яё]/i.test(utils.array.last(text.split("")))) {
		newText += ".";
	}
	if (/(?=[^\d])[\wа-яё]/.test(text[0])) {
		newText = newText.substring(1);
		newText = text[0].toUpperCase() + newText;
	}
	return newText;
};
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
SADFGHJAETJER
@SADFGHJAETJER
> для расстановки точки в конце и заглавной буквы в начале

const b = s => (s.slice(-1) !== '.' && (s = s + '.'), s.slice(0, 1).toUpperCase() + s.slice(1))
b("привет")
// 'Привет.'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
  • на функции побейте, с вменяемыми названиями
  • литералам регулярок можно тоже дать нормальные имена, сейчас не разберёшь что собственно тестится регуляркой - приходится её читать и думать
  • непонятно зачем тут стрелочная функция вместо обычной, ради чего весь этот синтаксический шум
  • непонятно зачем это присваивание: newText = newText.substring(1);, чтобы что? Почему не завести отдельную переменную tailText или перенести это во второе выражение?
  • лично я запутался в использовании text и newText - непонятно почему в последнем условии тестируется text[0], а хвост берём у newText. Выглядит так, что это сделано специально, но не пойму почему. А если НЕ специально - то вот вам пример как вы усложнили код на ровном месте.

Чем меньше вы пользуетесь сменой состояния, иными словами, чем больше у вас констант, а не переменных, и чем меньше присваиваний - тем код лучше читается. Я надеюсь вы не ради экономии чего-то там это делаете.
Ответ написан
Ваш ответ на вопрос

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

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