paint-brush
Refactoring 019 - כיצד לאמת כתובות דוא"לעל ידי@mcsee
1,052 קריאות
1,052 קריאות

Refactoring 019 - כיצד לאמת כתובות דוא"ל

על ידי Maximiliano Contieri4m2024/12/05
Read on Terminal Reader

יותר מדי זמן; לקרוא

הימנע מאימות דוא"ל כפול.
featured image - Refactoring 019 - כיצד לאמת כתובות דוא"ל
Maximiliano Contieri HackerNoon profile picture

תגיד את זה פעם אחת ורק פעם אחת

TL;DR: הימנע מאימות דוא"ל כפול.

בעיות מטופלות

ריחות קוד קשורים

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

קוד ריח 20 - אופטימיזציה מוקדמת

שלבים

  1. זהה היכן משוכפל לוגיקת אימות הדוא"ל.


  2. צור מחלקה Email Address כדי לכלול כללי אימות.


  3. קוד מחדש להשתמש במחלקה Email Address במקום מחרוזות גולמיות.

קוד לדוגמה

לִפנֵי

 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; } }

לְאַחַר

 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; } }

סוּג

  • [x] חצי אוטומטי

בְּטִיחוּת

שינוי זה בטוח אם תחליף את כל המופעים של מחרוזות דוא"ל גולמיות במחלקה 'כתובת אימייל' ותוודא שכל הבדיקות עוברות.

למה הקוד טוב יותר?

אתה הופך את אימות הדוא"ל לעקבי בכל היישום שלך.


מכיוון שכללי האימות מרוכזים במקום אחד, הקוד נעשה קל יותר לתחזוקה.


אתה גם מפחית את הסיכון לבאגים הנגרמים מהיגיון לא עקבי.


בעולם האמיתי, Email Addresses הן אובייקטים קטנים שקיימים ואינם מחרוזות.


הקוד המחודש קרוב יותר ל- MAPPER בעולם האמיתי.


שים לב ששמות חילוף חיוניים. זה יעזור ליצור EmailAddress , לא Email , מכיוון שהמייל צריך להיות מיפוי להודעה בפועל.


אל תתנו לאופטימיזציית מוקדמים לומר לכם שלפתרון הזה יש עונש ביצועים.


הם אף פעם לא עושים מדדים אמיתיים עם נתונים מהעולם האמיתי.

Refactor עם AI

ללא הוראות מתאימות

עם הוראות ספציפיות

ChatGPT

ChatGPT

קלוד

קלוד

מְבוּכָה

מְבוּכָה

טייס משנה

טייס משנה

מַזַל תְאוּמִים

מַזַל תְאוּמִים

תגים

  • אנקפסולציה

Refactorings קשורים

קרדיטים

תמונה מאת גרד אלטמן ב- Pixabay


מאמר זה הוא חלק מסדרת Refactoring.

כיצד לשפר את הקוד שלך עם Refactorings קלים