paint-brush
Refactoring 019 - Si të rivendosni adresat e postës elektronikenga@mcsee
258 lexime

Refactoring 019 - Si të rivendosni adresat e postës elektronike

nga Maximiliano Contieri4m2024/12/05
Read on Terminal Reader

Shume gjate; Te lexosh

Shmangni vërtetimet e dyfishta të emailit.
featured image - Refactoring 019 - Si të rivendosni adresat e postës elektronike
Maximiliano Contieri HackerNoon profile picture

Thuaj një herë dhe vetëm një herë

TL;DR: Shmangni vërtetimet e dyfishta të emailit.

Problemet e adresuara

Kodi i ngjashëm me erë

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-x-i7r34uj

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-xiv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxvi

Kodi Smell 20 - Optimizimi i Parakohshëm

Hapat

  1. Identifikoni se ku logjika e vërtetimit të emailit është e dyfishuar.


  2. Krijoni një klasë Email Address për të përmbledhur rregullat e vlefshmërisë.


  3. Kodi Refactor për të përdorur klasën Email Address në vend të vargjeve të papërpunuara.

Shembull i kodit

Përpara

 public class Person { private String emailAddress; // Primitive Obsession public void setEmailAddress(String emailAddress) { // Duplicated code if (!emailAddress.matches( "^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}$")) { throw new IllegalArgumentException( "Invalid email address format"); } this.emailAddress = emailAddress; } } public class JobApplication { private String applicantEmailAddress; public void setApplicantEmailAddress(String emailAddress) { // Duplicated code if (!emailAddress.matches( "^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}$")) { throw new IllegalArgumentException( "Invalid email address format"); } this.applicantEmailAddress = emailAddress; } }

Pas

 public class EmailAddress { // 2. Create an `EmailAddress` class to encapsulate validation rules. private final String value; public EmailAddress(String value) { // The rules are in a single place // And all objects are created valid if (!value.matches("^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}$")) { throw new IllegalArgumentException( "Invalid email address format"); } this.value = value; } } public class Person { private final EmailAddress emailAddress; public Person(EmailAddress emailAddress) { // 1. Identify where email validation logic is duplicated. // 3. Refactor code to use the `Email Address` // class instead of raw strings. // No validation is required this.emailAddress = emailAddress; } } public class JobApplication { private EmailAddress applicantEmailAddress; public JobApplication(EmailAddress applicantEmailAddress) { this.applicantEmailAddress = applicantEmailAddress; } }

Lloji

  • [x] Gjysmë Automatik

Siguria

Ky rifaktorim është i sigurt nëse zëvendësoni të gjitha shfaqjet e vargjeve të papërpunuara të postës elektronike me klasën 'EmailAddress' dhe siguroheni që të gjitha testet të kalojnë.

Pse Kodi është më i mirë?

Ju e bëni vërtetimin e emailit të qëndrueshëm në të gjithë aplikacionin tuaj.


Meqenëse rregullat e vlefshmërisë janë të centralizuara në një vend, kodi bëhet më i lehtë për t'u ruajtur.


Ju gjithashtu zvogëloni rrezikun e gabimeve të shkaktuara nga logjika jokonsistente.


Në botën reale, Email Addresses janë objekte të vogla që ekzistojnë dhe nuk janë vargje.


Kodi i rifaktoruar është më afër MAPPER-it të botës reale.


Vini re se emrat bijeksion janë thelbësorë. Do të ndihmonte për të krijuar një EmailAddress , jo një Email , pasi Email-i duhet të lidhet me mesazhin aktual.


Mos lejoni që Optimizuesit e Parakohshëm t'ju thonë se kjo zgjidhje ka një dënim të performancës.


Ata kurrë nuk bëjnë standarde aktuale me të dhënat e botës reale.

Refactor me AI

Pa udhëzime të duhura

Me udhëzime specifike

ChatGPT

ChatGPT

Klodi

Klodi

Hutim

Hutim

Kopilot

Kopilot

Binjakët

Binjakët

Etiketat

  • Kapsulimi

Refactorings të lidhura

Kreditë

Imazhi nga Gerd AltmannPixabay


Ky artikull është pjesë e Serisë së Rifaktorimit.

Si të përmirësoni kodin tuaj me rifaktorime të lehta

L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

VARUR TAGS

KY ARTIKU U PARAQIT NË...