paint-brush
إعادة الهيكلة 019 - كيفية إعادة هيكلة عناوين البريد الإلكترونيبواسطة@mcsee
1,052 قراءة٪ s
1,052 قراءة٪ s

إعادة الهيكلة 019 - كيفية إعادة هيكلة عناوين البريد الإلكتروني

بواسطة Maximiliano Contieri4m2024/12/05
Read on Terminal Reader

طويل جدا؛ ليقرأ

تجنب التحقق من صحة البريد الإلكتروني المكرر.
featured image - إعادة الهيكلة 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

Code Smell 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] شبه آلي

أمان

تكون عملية إعادة الهيكلة هذه آمنة إذا قمت باستبدال جميع حالات سلاسل البريد الإلكتروني الخام بفئة 'EmailAddress' وتأكدت من اجتياز جميع الاختبارات.

لماذا الكود أفضل؟

تجعل التحقق من صحة البريد الإلكتروني متسقًا في تطبيقك.


نظرًا لأن قواعد التحقق مركزية في مكان واحد، أصبح من الأسهل صيانة الكود.


كما يمكنك أيضًا تقليل خطر الأخطاء الناجمة عن المنطق غير المتسق.


في العالم الحقيقي، Email Addresses عبارة عن كائنات صغيرة موجودة وليست سلاسل.


يعتبر الكود المعاد صياغته أقرب إلى MAPPER في العالم الحقيقي.


لاحظ أن أسماء التطابق ضرورية. سيساعدك إنشاء EmailAddress ، وليس Email ، حيث يجب أن يتوافق البريد الإلكتروني مع الرسالة الفعلية.


لا تدع المحسنين السابقين لأوانهم يخبرونك أن هذا الحل له تأثير سلبي على الأداء.


إنهم لا يقومون أبدًا بإجراء معايير فعلية باستخدام بيانات العالم الحقيقي.

إعادة الهيكلة باستخدام الذكاء الاصطناعي

بدون تعليمات صحيحة

مع تعليمات محددة

تشات جي بي تي

تشات جي بي تي

كلود

كلود

الحيرة

الحيرة

مساعد الطيار

مساعد الطيار

تَوأَم

تَوأَم

العلامات

  • التغليف

إعادة الهيكلة ذات الصلة

الاعتمادات

الصورة من تصوير Gerd Altmann على Pixabay


هذه المقالة جزء من سلسلة إعادة الهيكلة.

كيفية تحسين الكود الخاص بك باستخدام عمليات إعادة الهيكلة السهلة