Rumah > hujung hadapan web > tutorial js > Pemfaktoran Semula - Reify Alamat E-mel

Pemfaktoran Semula - Reify Alamat E-mel

Barbara Streisand
Lepaskan: 2024-12-25 16:50:15
asal
849 orang telah melayarinya

Sebut sekali dan hanya sekali

TL;DR: Elakkan pengesahan e-mel pendua.

Masalah Diatasi

  • Logik pengesahan e-mel berulang di berbilang tempat.
  • Risiko peraturan pengesahan yang tidak konsisten.
  • Sukar mengekalkan peraturan pengesahan.
  • Pelanggaran bijection
  • Obsesi Primitif
  • Pengoptimuman Pramatang

Bau Kod Berkaitan

Refactoring  - Reify Email Addresses

Bau Kod 46 - Kod Berulang

Maxi Contieri ・ 8 Dis '20

#oop #codenewbie #tutorial #webdev
Refactoring  - Reify Email Addresses

Bau Kod 122 - Obsesi Primitif

Maxi Contieri ・ 17 Mac '22

#oop #webdev #tutorial #pemula
Refactoring  - Reify Email Addresses

Bau Kod 66 - Pembedahan Senapang patah

Maxi Contieri ・ 5 Apr '21

#codenewbie #tutorial #oop #webdev
Refactoring  - Reify Email Addresses

Bau Kod 177 - Objek Kecil Hilang

Maxi Contieri ・ 5 Nov '22

#webdev #javascript #pemula #pengaturcaraan
Refactoring  - Reify Email Addresses

Bau Kod 20 - Pengoptimuman Pramatang

Maxi Contieri ・ 8 Nov '20

#oop #membangun #pengekodan #codesmell

Langkah

  1. Kenal pasti tempat logik pengesahan e-mel diduplikasi.
  2. Buat kelas Alamat E-mel untuk merangkum peraturan pengesahan.
  3. Kod refactor untuk menggunakan kelas Alamat E-mel dan bukannya rentetan mentah.

Kod Contoh

Sebelum ini

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;
    }
}
Salin selepas log masuk

Selepas

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;
    }
}
Salin selepas log masuk

taip

[X] Separuh Automatik

Keselamatan

Pemfaktoran semula ini selamat jika anda menggantikan semua kejadian rentetan e-mel mentah dengan kelas 'EmailAddress' dan memastikan semua ujian lulus.

Mengapa Kod Lebih Baik?

Anda membuat pengesahan e-mel konsisten di seluruh permohonan anda.

Memandangkan peraturan pengesahan dipusatkan di satu tempat, kod menjadi lebih mudah untuk dikekalkan.

Anda juga mengurangkan risiko pepijat yang disebabkan oleh logik yang tidak konsisten.

Di dunia nyata, Alamat E-mel ialah objek kecil yang wujud dan bukan rentetan.

Kod yang difaktorkan semula lebih dekat dengan MAPPER dunia sebenar

Perhatikan bahawa nama bijection adalah penting. Ia akan membantu untuk membuat 'Alamat E-mel', bukan 'E-mel', kerana E-mel harus dipetakan kepada mesej sebenar.

Jangan biarkan Pengoptimum Pramatang memberitahu anda bahawa ini mempunyai penalti prestasi.

Mereka tidak pernah melakukan penanda aras sebenar dengan data dunia sebenar.

Refactor dengan AI

Without Proper Instructions With Specific Instructions
ChatGPT ChatGPT
Claude Claude
Perplexity Perplexity
Copilot Copilot
Gemini Gemini

Tag

  • Pengenkapsulan

Pemfaktoran Semula Berkaitan

Refactoring  - Reify Email Addresses

Pemfaktoran Semula 007 - Kelas Ekstrak

Maxi Contieri ・ 4 Jul '22

#webdev #pemula #javascript #tutorial
Refactoring  - Reify Email Addresses

Pemfaktoran Semula 012 - Tatasusunan Bersekutu Reify

Maxi Contieri ・ 19 Nov '23

#webdev #pengaturcaraan #pemula #php
Refactoring  - Reify Email Addresses

Pemfaktoran Semula 002 - Kaedah Ekstrak

Maxi Contieri ・ 25 Nov '21

#pemfaktoran semula #oop #webdev #codenewbie

Kredit

Imej oleh Gerd Altmann di Pixabay


Artikel ini adalah sebahagian daripada Siri Pemfaktoran Semula.

Refactoring  - Reify Email Addresses

Cara Meningkatkan Kod anda Dengan Pemfaktoran Semula yang mudah

Maxi Contieri ・ 24 Okt '22

#webdev #pemula #pengaturcaraan #tutorial

Atas ialah kandungan terperinci Pemfaktoran Semula - Reify Alamat E-mel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan