Запах кода 158 — Переменные не переменные

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

TL;DR: Будьте декларативны в отношении изменяемости.

Проблемы

  • Читабельность

  • Честная мутабельность биекции.

  • Потенциальные проблемы с производительностью и памятью.

Решения

  1. Замените переменную на константу и четко определите область ее применения.

Контекст

Мы всегда учимся у области.

Иногда мы догадываемся, что значение может измениться с помощью MAPPER.

Позже мы узнаем, что оно не изменится.

Поэтому нам нужно перевести его в константу.

Это также позволит избежать магических констант

Код примера

Неправильный

<?php

function configureUser() {
  $password = '123456';
  // Setting a password on a variable is another vulnerability
  // And Code Smell
  $user = new User($password);
  // Notice Variable doesn't change
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Правильно

<?php

define("USER_PASSWORD", '123456')

function configureUser() {  
  $user = new User(USER_PASSWORD);
}

// or 

function configureUser() {  
  $user = new User(userPassword());
}

function userPassword() : string {
  return '123456';
}

// Case is oversimplification as usual
Войти в полноэкранный режим Выход из полноэкранного режима

Обнаружение

[X] Автоматическое

Многие линтеры проверяют, имеет ли переменная только одно присваивание.

Можно также провести мутационное тестирование и попытаться модифицировать переменную, чтобы посмотреть, не нарушатся ли тесты.

Теги

  • Мутабельность

Заключение

Мы должны бросить себе вызов и провести рефакторинг, когда область видимости переменной станет ясной и мы узнаем больше о ее свойствах и мутабельности.

Отношения

Запах кода 127 — Мутабельные константы

Maxi Contieri ・ Apr 5 ・ 2 min read

#учебник #webdev #javascript #новички

Code Smell 107 — Повторное использование переменных

Maxi Contieri ・ Dec 1 ’21 ・ 2 min read

#oop #программирование #webdev #учебник

Code Smell 02 — Константы и магические числа

Maxi Contieri ・ Oct 21 ’20 ・ 1 min read

#новички #коденновичок #100daysofcode #качество кода

Рефакторинги

Рефакторинг 003 — Извлечение константы

Maxi Contieri ・ Jan 2 ・ 1 min read

#oop #программирование #рефакторинг #cleancode

Подробнее

Злые силы мутантов

Maxi Contieri ・ Dec 19 ’20 ・ 6 min read

#webdev #программирование #мутация #oop

Отказ от ответственности

Запахи кода — это только мое мнение.

Credits

Фото Noah Buscher на Unsplash


Сложная система, которая работает, неизменно оказывается развившейся из простой системы, которая работала.

Джон Галл

Программная инженерия Великие цитаты

Maxi Contieri ・ Dec 28 ’20 ・ 13 min read

#codenewbie #программирование #цитаты #программное обеспечение

Эта статья является частью серии CodeSmell.

Как найти зловонные части вашего кода

Maxi Contieri ・ May 21 ’21 ・ 7 min read

#codenewbie #учебник #качество кода #новички

Оцените статью
devanswers.ru
Добавить комментарий