Поиск лишний строчек в проекте

proWoke

Новичок
Здравствуйте. Мне вот интересно а как лишние строчки в программе ищутся? Это есть как нибудь автоматизированно в средах разработки? Или мб ещё какие способы есть? Про слово рефакторинг я лишь слышал и ничего пока не читал про это. Но я так понимаю это вручную всё проверять и оптимизировать. А я хочу узнать именно про лишние строчки. Я вообще подобный вопрос задавал уже, но тогда я сам не знал чего хочу.
 

shelestov

я тут часто
Что такое "лишняя строчка кода"?
Вы имеете ввиду дублирование кода в проектах?
 

proWoke

Новичок
Не только. К примеру я создал переменную какую то со значением. Думал об одном и создал не так. В итоге она осталась висеть мёртвым грузом в файле, от пользы нету точно, а вот вред очевиден. Занимает лишнее место, снижает читабельность. Также я мог создать обьект какой-то неиспользуемый.
 

whirlwind

TDD infected, paranoid
В некоторых языках например c/c++ и Java неиспользуемые переменные и функции отмечаются при компиляции. Но это не поможет сделать из говнокода конфету. Что бы не создавать мертвого груза, нужно разрабатывать код в виде четких логических единиц, каждая из которых выполняет определенную, легко распознаваемую (читаемую) задачу. Для начала следует принять за правило следующие советы:
1. Не использовать глобальные переменные
2. Код функции помещается на экране
3. Не использовать конструкции, нарушающие естественный ход работы программы (goto, exit, exceptions для передачи управления, etc).
Когда станет понятно для чего эти правила, можно будет переходить к ооп, рефакторингам и прочим премудростям.
 

proWoke

Новичок
В некоторых языках например c/c++ и Java неиспользуемые переменные и функции отмечаются при компиляции. Но это не поможет сделать из говнокода конфету. Что бы не создавать мертвого груза, нужно разрабатывать код в виде четких логических единиц, каждая из которых выполняет определенную, легко распознаваемую (читаемую) задачу. Для начала следует принять за правило следующие советы:
1. Не использовать глобальные переменные
2. Код функции помещается на экране
3. Не использовать конструкции, нарушающие естественный ход работы программы (goto, exit, exceptions для передачи управления, etc).
Когда станет понятно для чего эти правила, можно будет переходить к ооп, рефакторингам и прочим премудростям.
А exit() разве не надо использовать при перенаправлении?
PHP:
header("Location: index.php");
exit();
 

Духовность™

Продвинутый новичок
Также я мог создать обьект какой-то неиспользуемый.
Вы неадекватный? Извините за прямоту, но у меня подобных проблем даже на заре моей учебы не возникало, не говоря уже о текущем времени. Надо просто к программированию относиться с уважением, к коду своему; писать не как курица лапой, не тяп-ляп абы как, а стремиться писать код, понятный себе и другим. Тогда и не будет подобных вопросов. Голову короче надо включать.
 

proWoke

Новичок
Вы неадекватный? Извините за прямоту, но у меня подобных проблем даже на заре моей учебы не возникало, не говоря уже о текущем времени. Надо просто к программированию относиться с уважением, к коду своему; писать не как курица лапой, не тяп-ляп абы как, а стремиться писать код, понятный себе и другим. Тогда и не будет подобных вопросов. Голову короче надо включать.
Да я и страюсь не писать Тяп-Ляп. Я говорю вообще, теоретически как с таким бороться, потому что практические такое может случиться.
 

Духовность™

Продвинутый новичок
я пишу свой код так: напишу - он работает. потом я смотрю, что не так - убираю лишнее, чищу, оптимизирую алгоритмы - это называется рефактотринг. потом через месяц-другой я возвращаюсь к коду и делаю тоже самое. в моих программах нет ни одной лишней переменной, они идеальны. более того, лишние переменные - это результат говнокода, спагетти-кода т.н. алгоритмы должны быть зашиты в функции или объекты, тогда в твоей глобальной области видимости не будет лишнего
 

whirlwind

TDD infected, paranoid
proWoke если код портянкой, то наверное это оправдано. Но если exit внутри функции, то это ненормально, так как вызывающий код ожидает что функция завершится с возвратом значения или без, но обязательно с обратной раскруткой стека. То есть вызывающий код может подразумевать какую то работу после вызова, которую exit перескочит. Соблюдая эти правила можно рассматривать функции на уровне прототипов. Маленькие черные ящики, которые все поголовно ведут себя предсказуемо.
 

Adelf

Administrator
Команда форума
в моих программах нет ни одной лишней переменной, они идеальны
Иногда я не надеюсь, что ты лишь шутишь так. Но, похоже, моим надеждам не суждено сбыться :)

тогда в твоей глобальной области видимости не будет лишнего
Никто тут про глобальный скоп не говорит. Проблема имеет место быть. Не все же, как ты, пишут идеальный код.

Теперь по теме:
Такие инструменты хороши только для статических языков.

Вот попробуй угадай тут:
PHP:
$a = 14;
$b = 'a';

print $$b;
Как угадаешь что $a использована?
 

shelestov

я тут часто
я пишу свой код так: напишу - он работает. потом я смотрю, что не так - убираю лишнее, чищу, оптимизирую алгоритмы - это называется рефактотринг. потом через месяц-другой я возвращаюсь к коду и делаю тоже самое. в моих программах нет ни одной лишней переменной, они идеальны. более того, лишние переменные - это результат говнокода, спагетти-кода т.н. алгоритмы должны быть зашиты в функции или объекты, тогда в твоей глобальной области видимости не будет лишнего
Круто, когда есть время возвращаться 5 раз к одному куску кода.
 

Духовность™

Продвинутый новичок
Круто, когда есть время возвращаться 5 раз к одному куску кода.
я пишу свой код так
"свой" - значит, код своих проектов, нацеленных на будущее
я научился писать грамотный код исключительно благодаря рефакторингу
пока ты не вернешься 25 раз к своему коду, не осмыслишь его и не найдешь в нем ошибки, цена твоим знаниям не велика
 

Adelf

Administrator
Команда форума
Духовность™
как раз из-за множественного рефакторинга и возникают всякие забытые объекты и т.д.
 
  • Like
Реакции: AmdY

shelestov

я тут часто
"свой" - значит, код своих проектов, нацеленных на будущее
я научился писать грамотный код исключительно благодаря рефакторингу
пока ты не вернешься 25 раз к своему коду, не осмыслишь его и не найдешь в нем ошибки, цена твоим знаниям не велика
Ну да свой это святое. :)
 

shelestov

я тут часто
Духовность™
как раз из-за множественного рефакторинга и возникают всякие забытые объекты и т.д.
Мой рабочий проект пишется активно 4-5-ю программистами уже более 6-и лет.
Кода тьма, я вообще боюсь применять к этому проекту слово рефакторинг. Пока модуль/компонент/модель и т.д. работает не трогаю :)
 
  • Like
Реакции: AmdY
Сверху