BG Development


Страници: (5) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Сигурно премахване на мъртъв код
FidelDahan
Публикувано на: 30-01-2018, 19:19
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2273
Регистриран на: 12.06.08



Кои от вас се занимават активно с този проблем и имате ли техники, които позволяват да трием. Понякога IDE-то бърка мъртъв код, който всъщтност се вика от някъде чрез покварни механизми или пък понякога не успява да покаже всичко което може да се изтрие. Някакви идеи от практиката?
PMEmail Poster
Top
lucky
Публикувано на: 30-01-2018, 19:31
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 287
Регистриран на: 05.08.17



Може би не разбирам проблема, но аз по принцип ползвам References searcha на IDEто и то ми намира всички места, където се вика даден метод. Ако няма такива, го затривам или рефакторвам там зависи според случая.
PMEmail Poster
Top
FidelDahan
Публикувано на: 30-01-2018, 19:47
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2273
Регистриран на: 12.06.08



Това работи в повечето случаи, но не работи когато има викане през Reflection/Introspection или викане от динамичен код. Също така не винаги работи надеждно когато имаме интерфейсни методи (трябва да познава целия съществуващ код) или пък когато клъстъри от класове се викат помежду си, но целия клъстър е мъртъв...
PMEmail Poster
Top
qtakabg
Публикувано на: 30-01-2018, 19:47
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 883
Регистриран на: 26.02.15



Доколкото си спомням описанията на Фидел за неговия проект, сигурно използват такива патърни, че и ИДЕ-то кръстосва очи :-)
PMEmail Poster
Top
DarkOne
Публикувано на: 30-01-2018, 21:11
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3203
Регистриран на: 30.01.04



Моят принцип е да не се премахва код, който не е ясно как се ползва. Естествено при TDD сигурно няма такива проблеми, махаш кода и ако минат тестовете, значи е бил мъртъв icon_smile.gif


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
SuN
Публикувано на: 30-01-2018, 21:25
Quote Post


Group Icon
Име: Финто Нешън
Група: Администратор
Ранг: Почетен член

Мнения: 5266
Регистриран на: 27.01.05



А за случаите, когато нещо е трябвало да умре, но продължава да се ползва грешно (ей такъв случай имам днес)? Според мен един-два реда документация някъде ще са по-полезни, отколкото някакви техники.

Това мнение е било редактирано от SuN на 30-01-2018, 21:25


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
stewie
Публикувано на: 30-01-2018, 22:04
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2991
Регистриран на: 14.07.16



QUOTE (FidelDahan @ 30-01-2018, 20:47)
Това работи в повечето случаи, но не работи когато има викане през Reflection/Introspection или викане от динамичен код. Също така не винаги работи надеждно когато имаме интерфейсни методи (трябва да познава целия съществуващ код) или пък когато клъстъри от класове се викат помежду си, но целия клъстър е мъртъв...

Понеже имам точно код дето се вика с рефлекшън, освен да търся всички референции, може да звучи глупаво, но пускам търсачката и гледам резултат по резултат дали няма да намеря нещо, което вика уж неизползваемият код. И това е при положение, че всичко ми е в един солюшън. Ако имаш пък клиенти на твоя код от друго място (примерно някакви UI клиенти викат някакви endpoint методи), е почти невъзможно да разбереш без документация и питане.

Това мнение е било редактирано от stewie на 30-01-2018, 22:05
PM
Top
FidelDahan
Публикувано на: 31-01-2018, 02:07
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2273
Регистриран на: 12.06.08



И аз така търся хамалската всички кодови бази със 'ag', но ми е много бавен този метод. Мислех си, дали има смисъл, в продъкшън да се пусне JVM agent, който подобно на инструментите за мерене на code coverage в продължение на седмици да прихваща кои методи се викат и кои не и накрая това да се вземе като допълнителна улика дали нещо може да се изтрие.

QUOTE
Моят принцип е да не се премахва код, който не е ясно как се ползва. Естествено при TDD сигурно няма такива проблеми, махаш кода и ако минат тестовете, значи е бил мъртъв


Аз се опитвам да идентифицирам код, който не се вика от никъде. Това не е проблем за IntelliJ да го намери автоматично, ако знаеш всичките входни точки на програмата и ако не се използва reflection. Но при нас има поне 20 места където се правят динамични проксита, инвокейшън хендлъри или пък просто някой фреймуърк използва reflection за да ти извика кода..
PMEmail Poster
Top
Fly
Публикувано на: 31-01-2018, 07:23
Quote Post



Име: Димитър Костов
Група: Потребител
Ранг: Почетен член

Мнения: 3956
Регистриран на: 02.02.07



Ако не знаеш дали проекта ще работи ако изтриеш код, как знаеш че проекта ще работи като добавяш код. Не, че нещо ама 2018 година сме, вземи седни напиши някой тест като за начало. Аз си мислех, че отмина времето на тестване в браузъра (за веб приложения) ала PHP -> отваряш браузъра, сереш PHP и ръгаш Refresh
PMEmail Poster
Top
johnfound
Публикувано на: 31-01-2018, 09:16
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5590
Регистриран на: 27.05.04



QUOTE (Fly @ 31-01-2018, 08:23)
Ако не знаеш дали проекта ще работи ако изтриеш код, как знаеш че проекта ще работи като добавяш код.

Това е невероятно мъдро! Жалко, че не спря да пишеш след това изречение и си развали поста. icon_lol.gif


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (5) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0