paint-brush
Refactoring 019 - របៀបកែតម្រូវអាសយដ្ឋានអ៊ីមែលដោយ@mcsee
258 ការអាន

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. កូដ 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; } }

ប្រភេទ

  • [x] ពាក់កណ្តាលស្វ័យប្រវត្តិ

សុវត្ថិភាព

ការជួសជុលឡើងវិញនេះគឺមានសុវត្ថិភាពប្រសិនបើអ្នកជំនួសការកើតឡើងទាំងអស់នៃខ្សែអ៊ីមែលឆៅជាមួយនឹងថ្នាក់ 'EmailAddress' ហើយធានាថាការធ្វើតេស្តទាំងអស់ឆ្លងកាត់។

ហេតុអ្វីបានជាលេខកូដប្រសើរជាង?

អ្នកធ្វើឱ្យមានសុពលភាពអ៊ីមែលស្របគ្នានៅលើកម្មវិធីរបស់អ្នក។


ដោយសារច្បាប់សុពលភាពត្រូវបានដាក់នៅកណ្តាលកន្លែងតែមួយ កូដកាន់តែងាយស្រួលក្នុងការរក្សា។


អ្នកក៏កាត់បន្ថយហានិភ័យនៃកំហុសដែលបណ្តាលមកពីតក្កវិជ្ជាមិនស៊ីសង្វាក់គ្នាផងដែរ។


នៅក្នុងពិភពពិត Email Addresses គឺជា វត្ថុតូចៗ ដែលមាន និងមិនមែនជាខ្សែអក្សរ។


លេខកូដដែលបានកែលម្អគឺកាន់តែជិតទៅនឹង MAPPER ពិភពពិត។


ចំណាំថាឈ្មោះ bijection គឺចាំបាច់។ វានឹងជួយបង្កើត EmailAddress មិនមែនជា Email ទេ ព្រោះ Email គួរតែ ផ្គូផ្គង ទៅនឹងសារពិតប្រាកដ។


កុំឱ្យ អ្នកបង្កើនប្រសិទ្ធភាពមុនអាយុ ប្រាប់អ្នកថាដំណោះស្រាយនេះមានការពិន័យលើការអនុវត្ត។


ពួកគេមិនដែលធ្វើស្តង់ដារជាក់ស្តែងជាមួយនឹងទិន្នន័យពិភពលោកពិតនោះទេ។

Reactor ជាមួយ AI

ដោយគ្មានការណែនាំត្រឹមត្រូវ។

ជាមួយនឹងការណែនាំជាក់លាក់

ChatGPT

ChatGPT

ក្លូដ

ក្លូដ

ភាពច្របូកច្របល់

ភាពច្របូកច្របល់

កូពីឡុត

កូពីឡុត

Gemini

Gemini

ស្លាក

  • ការវេចខ្ចប់

ការកែលម្អដែលពាក់ព័ន្ធ

ឥណទាន

រូបថតរបស់ Gerd Altmann នៅលើ Pixabay


អត្ថបទនេះគឺជាផ្នែកមួយនៃស៊េរី Refactoring ។

របៀបធ្វើអោយកូដរបស់អ្នកប្រសើរឡើងជាមួយការកែសំរួលងាយស្រួល

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

ព្យួរស្លាក

អត្ថបទនេះត្រូវបានបង្ហាញនៅក្នុង...