និយាយម្តងហើយតែម្តង
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 - ការបង្កើនប្រសិទ្ធភាពមុនអាយុ
កំណត់កន្លែងដែលតក្កវិជ្ជាផ្ទៀងផ្ទាត់អ៊ីមែលត្រូវបានចម្លង។
បង្កើតថ្នាក់ Email Address
ដើម្បីបញ្ចូលច្បាប់សុពលភាព។
កូដ Refactor ដើម្បីប្រើថ្នាក់ 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; } }
ការជួសជុលឡើងវិញនេះគឺមានសុវត្ថិភាពប្រសិនបើអ្នកជំនួសការកើតឡើងទាំងអស់នៃខ្សែអ៊ីមែលឆៅជាមួយនឹងថ្នាក់ 'EmailAddress' ហើយធានាថាការធ្វើតេស្តទាំងអស់ឆ្លងកាត់។
អ្នកធ្វើឱ្យមានសុពលភាពអ៊ីមែលស្របគ្នានៅលើកម្មវិធីរបស់អ្នក។
ដោយសារច្បាប់សុពលភាពត្រូវបានដាក់នៅកណ្តាលកន្លែងតែមួយ កូដកាន់តែងាយស្រួលក្នុងការរក្សា។
អ្នកក៏កាត់បន្ថយហានិភ័យនៃកំហុសដែលបណ្តាលមកពីតក្កវិជ្ជាមិនស៊ីសង្វាក់គ្នាផងដែរ។
នៅក្នុងពិភពពិត Email Addresses
គឺជា វត្ថុតូចៗ ដែលមាន និងមិនមែនជាខ្សែអក្សរ។
លេខកូដដែលបានកែលម្អគឺកាន់តែជិតទៅនឹង MAPPER ពិភពពិត។
ចំណាំថាឈ្មោះ bijection គឺចាំបាច់។ វានឹងជួយបង្កើត EmailAddress
មិនមែនជា Email
ទេ ព្រោះ Email គួរតែ ផ្គូផ្គង ទៅនឹងសារពិតប្រាកដ។
កុំឱ្យ អ្នកបង្កើនប្រសិទ្ធភាពមុនអាយុ ប្រាប់អ្នកថាដំណោះស្រាយនេះមានការពិន័យលើការអនុវត្ត។
ពួកគេមិនដែលធ្វើស្តង់ដារជាក់ស្តែងជាមួយនឹងទិន្នន័យពិភពលោកពិតនោះទេ។
ដោយគ្មានការណែនាំត្រឹមត្រូវ។ | ជាមួយនឹងការណែនាំជាក់លាក់ |
---|---|
រូបថតរបស់ Gerd Altmann នៅលើ Pixabay
អត្ថបទនេះគឺជាផ្នែកមួយនៃស៊េរី Refactoring ។