Rehefa ny fametrahana fitsapana dia lehibe kokoa noho ny fitsapana tena izy
TL;DR: Ny fametrahana be dia be izay ampiasain'ny ampahany ihany no mahatonga ny fitsapana ho sarotra kokoa ary sarotra kokoa ny mahatakatra.
TL;DR: Ny fametrahana be dia be izay ampiasain'ny ampahany ihany no mahatonga ny fitsapana ho sarotra kokoa ary sarotra kokoa ny mahatakatra.
Ny olana
- Ny fifanarahana
- Ny fahafantarana
- Fandaniana fotoana amin'ny famonoana
- Ny fifanarahana amin'ny fifanarahana
- Ny fanandramana mifanohitra
- Sarotra kokoa ny fikarakarana
- Brittle fitsapana Suite
- Mifandray amin'ny fitoviana
- Ny fampiharana tsikelikely
- Ny toe-javatra mampihomehy
Ny vahaolana
- Mamorona fomba fijery mifantoka amin'ny fampiharana
- Mampiasa fitaovana manokana amin'ny fanandramana
- Mamorona setup kely indrindra ianao
- Ny fametrahana ny fomba fanandramana orinasa
Ny famerenana ️
https://hackernoon.com/improving-the-code-one-line-at-a-time
https://maximilianocontieri.com/refactoring-011-replace-comments-with-tests
Ny fifanarahana
Rehefa manoratra fanadinana ianao, dia azonao atao ny mamorona fomba fametrahana lehibe izay manomboka ny zavatra samihafa.
Raha ny fanandramana iray ihany no mampiasa ireo zavatra ireo raha ny fanandramana hafa ihany no mampiasa subset kely, dia mamorona overhead tsy ilaina ianao.
Ity olana mahazatra ity dia mitranga rehefa manantena ianao fa mila fametrahana lehibe ny fitsapana amin'ny hoavy, na rehefa manohy manampy amin'ny fametrahana misy ianao raha tsy manamarina izay tena ilaina.
Ny fanandramana dia sarotra kokoa ny mahatakatra satria misy mifandray tsy misy dikany, ary mora kokoa amin'ny fanatanterahana satria manomboka ny zavatra tsy ampiasaina.
Tsindrio ny code.
Ny fahadisoana
public class TVSeriesTest {
private MovieSeries theEthernaut;
private List<Character> characters;
private List<Episode> episodes;
private User user;
private UserPreferences preferences;
private RatingSystem ratingSystem;
private StreamingService streamingService;
private List<Review> reviews;
@BeforeEach
public void setUp() {
// Create a complex movie series with many characters
characters = new ArrayList<>();
characters.add(new Character("Juan Salvo", "Richard Darin"));
characters.add(new Character("Helen", "Carla Peterson"));
characters.add(new Character("Favalli", "Cesar Troncoso"));
// Create episodes
episodes = new ArrayList<>();
episodes.add(
new Episode("The Snow", 2025, 121));
episodes.add(
new Episode("The Hands Strikes Back", 2027, 124));
// Create user with preferences
preferences = new UserPreferences();
preferences.setPreferredGenre("Science Fiction");
preferences.setPreferredLanguage("English");
preferences.setSubtitlesEnabled(true);
user = new User("JohnDoe", "john@example.com", preferences);
// Create rating system with reviews
ratingSystem = new RatingSystem(10);
reviews = new ArrayList<>();
reviews.add(
new Review(user, "The Snow", 9, "Classic!"));
reviews.add(
new Review(user, "The Hands Strikes Back", 10, "Best one!"));
ratingSystem.addReviews(reviews);
// Create streaming service
streamingService = new StreamingService("Netflix");
streamingService.addMovieSeries("The Eternaut");
// Finally create the movie series with all components
theEthernaut =
new TVSeries("The Ethernaut", characters, episodes);
theEthernaut.setRatingSystem(ratingSystem);
theEthernaut.setAvailableOn(streamingService);
// This method is too long. That is another smell
}
@Test
public void testTVSeriesRecommendation() {
// This test uses almost everything from the setup
RecommendationEngine engine = new RecommendationEngine();
List<Episode> recommended =
engine.recommendations(user, theEternaut);
assertEquals(2, recommended.size());
assertEquals("The Hands Strikes Back",
recommended.get(0).title());
// You are testing the recomendation Engine
// This is not this object's responsibility
}
@Test
public void testEpisodeCount() {
// This test only needs the episodes count
assertEquals(2, theEthernaut.episodes().size());
}
@Test
public void testCharacterLookup() {
// This test only needs the characters
// And not the rest of the setup
Character juan = theEternaut.findCharacterByName("Juan Salvo");
assertNotNull(juan);
assertEquals("Juan Salvo", juan.actor());
}
}
Ny marina
public class TVSeriesTest {
// No shared setup
@Test
public void testRecommendation() {
// Create only what's needed for this specific test
// And move this test with the behavior
TVSeries theEternaut = createTheEternautSeries();
User homer = createUserWithPreferences();
addReviewsForUser(theEternaut, homer);
RecommendationEngine engine = new RecommendationEngine();
List<Episode> recommended =
engine.recommendations(homer, theEternaut);
assertEquals(2, recommended.size());
assertEquals("The Hands Strikes Back",
recommended.get(0).title());
}
@Test
public void testEpisodeCount() {
// Only create what's needed - just the episodes
TVSeries theEternaut = new TVSeries("The Ethernaut");
theEternaut.addEpisode(
new Episode("The Snow", 2025, 121));
theEternaut.addEpisode(
new Episode("The Hands Strikes Back", 2027, 124));
assertEquals(2, theEternaut.episodes().size());
}
@Test
public void testCharacterLookup() {
// Only create what's needed - just the characters
TVSeries theEternaut = new TVSeries("The Eternaut");
theEternaut.addCharacter(
new Character("Juan Salvo", "Richard Darin"));
theEternaut.addCharacter(
new Character("Helen", "Carla Peterson"));
Character juan = theEternaut.findCharacterByName("Juan Salvo");
assertNotNull(juan);
assertEquals("Richard Darin", juan.actor());
}
// Helper methods for specific test setup needs
private TVSeries createTheEternautTVSeries() {
TVSeries series = new TVSeries("The Eternaut");
series.addEpisode(
new Episode("The Snow", 2025, 121));
series.addEpisode(
new Episode("The Hands Strikes Back", 2027, 124));
return series;
}
private User createUserWithPreferences() {
UserPreferences preferences = new UserPreferences();
preferences.setPreferredGenre("Science Fiction");
preferences.setPreferredLanguage("English");
return new User("JohnDoe", "john@example.com", preferences);
}
private void addReviewsForUser(TVSeries series, User user) {
RatingSystem ratingSystem = new RatingSystem(10);
ratingSystem.addReview(
new Review(user, "The Snow", 9, "Classic!"));
ratingSystem.addReview(
new Review(user, "The Hands Strikes Back", 10, "Best one!"));
series.setRatingSystem(ratingSystem);
}
}
Ny famantarana
- [x] Ny fametrahana antsasaky ny automatique
Azonao atao ny mahita io fahatsapana io amin'ny alalan'ny mampitaha ny zavatra napetraka ao amin'ny fomba fametrahana amin'ny zavatra ampiasaina amin'ny fitsapana tsirairay.
Jereo ny fanandramana izay mampiasa latsaky ny 50% amin'ny zavatra voasoratra.
Ny fitaovana fametrahana code dia afaka manampy amin'ny famantarana ny zavatra tsy ampiasaina amin'ny fametrahana izay ampahany amin'ny fametrahana tsy vita amin'ny fitsapana sasany.
Raha toa ianao ka manoratra fepetra ao amin'ny fametrahana mba hamoronana toe-javatra samihafa, dia famantarana mazava fa mila fametrahana manokana amin'ny fitsapana ianao.
Ny taona ️
- Ny fitsapana
Ny ambaratonga
- [X] Ny fifanarahana
Nahoana no tena zava-dehibe ny fihaonambe ️
Ny fitsapana tsirairay dia tokony hampifanaraka ny toe-javatra manokana amin'ny tontolo tena izy.
Ny fametrahana be dia be dia be dia be dia be dia be dia be dia be no manimba ity fahamarinana ity, mahatonga azy io ho sarotra ny mahita izay miasa amin'ny fitsapana ary mampitombo ny mety ho fahadisoana.
Ny fandringananaNy fifanarahanamampidi-doza kokoa ny fanandramana satria tsy azonao atao ny mahatakatra izay ampahany amin'ny fametrahana dia manan-danja ho an'ny fanandramana ary izay ihany no feo.
Rehefa tsy nahomby ny fitsapana, dia handany fotoana bebe kokoa ianao amin'ny fikarohana ny fitoviana izay mety tsy misy ifandraisany amin'ny tsy fahombiazana.
Ny fitsapana dia mahatsiravina kokoa satria ny fanovana ny zavatra tsy ampiasaina dia mbola afaka mandika ny fitsapana raha mandray anjara amin'ny dingana fametrahana ireo zavatra ireo.
Ny taranaka
Ny generator code AI dia matetika mamorona io fahatsapana io rehefa mamorona fitaovana fitsapana feno izay miezaka manakana ny toe-javatra rehetra azo atao.
Manolotra tombontsoa amin'ny tanteraka izy ireo, izay mitarika amin'ny fomba fametrahana be dia be izay manomboka ny zavatra maro noho izay ilaina amin'ny fanandramana tsirairay.
Ny famantarana
Ny AI dia afaka mahita ity fahatsapana ity amin'ny alalan'ny torolàlana tsotra toy ny "Optimise my test setup only to include what is needed for each test."
Ny fitaovana AI maoderina dia afaka mampitaha ny fametrahana code amin'ny fampiasana ny fomba fitsapana ary manoro hevitra fanamafisana tanjona, manavaka ny fametrahana mizara amin'ny fametrahana manokana amin'ny fitsapana.
Manao izany ianao!
Tsarovy: Manao fahadisoana maro ny mpanampy AI
Torohevitra voatendry: Manafoana ny fitsapana sy ny fametrahana
Torohevitra voatendry: Manafoana ny fitsapana sy ny fametrahana
Without Proper Instructions |
With Specific Instructions |
---|---|
Ny fanapahan-kevitra
Ny fametrahana fanandramana be loatra izay manomboka ny zavatra ilaina amin'ny fanandramana vitsivitsy ihany no mahatonga ny Test Suite sarotra kokoa hahatakatra sy hitazonana.
Rehefa mamorona fametrahana mifantoka izay ahitana fotsiny izay ilain'ny fitsapana tsirairay ianao, dia manatsara ny fahamarinana, ny haingana ary ny azo antoka amin'ny fitsapana.
Tsarovy fa ny fanandramana dia mirakitra ny fitondran-tena amin'ny alalan'ny ohatra syManova ny fanehoan-kevitra.
Ny fifanarahana tsy misy dikany be dia be dia be no mahatonga ireo ohatra ireo ho tsy azo heverina. Ny fitsapana madio dia milaza tantara mazava tsy misy fisalasalana tsy ilaina.
Mifandraisa amin'izy ireo
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxv
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xi-sit35t1
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxiii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xli
Fampahalalana misimisy kokoa
Ny tsy fisian'ny
Ny voankazo dia ny tenakoNy hevitra.
Ny trosa
Sary avyNy Tompo SimonaNyTsy misy
Raha mila mamorona rafitra be dia be ianao alohan'ny hanandrana, angamba ianao no manandrana amin'ny lafiny maro
Raha mila mamorona rafitra be dia be ianao alohan'ny hanandrana, angamba ianao no manandrana amin'ny lafiny maro
Ny ranomasina
Ity lahatsoratra ity dia ampahany amin'ny Series CodeSmell.