Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memfaktorkan Semula Ketergantungan Rakan dalam Kod Anda?

Bagaimana untuk Memfaktorkan Semula Ketergantungan Rakan dalam Kod Anda?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 15:31:02763semak imbas

How to Refactor a Friend Dependency in Your Code?

Pemfaktoran Semula Ketergantungan Rakan

Dalam bidang pembangunan perisian, pengisytiharan rakan boleh memperkenalkan isu gandingan dan penyelenggaraan yang ketat. Panduan ini menyediakan peta jalan terperinci untuk memfaktorkan semula pergantungan rakan dengan betul, mengubah pangkalan kod anda menjadi struktur yang lebih boleh diselenggara dan berdaya tahan.

Menyingkap Keperluan untuk Pemfaktoran Semula

Pertimbangkan perkara berikut senario: ClassA dan ClassAAccessor berkongsi pergantungan rakan, memberikan akses ClassAAccessor kepada ahli ClassA yang dilindungi. Walaupun ini kelihatan mudah, ia menimbulkan beberapa kelemahan:

  • UML 2.2 telah menafikan stereotaip rakan.
  • Kebanyakan garis panduan pengekodan tidak menggalakkan penggunaan rakan disebabkan oleh pergantungan yang berlebihan yang ditimbulkannya.
  • Ia boleh membawa kepada mimpi buruk penyelenggaraan.

Pemfaktoran Semula Langkah demi Langkah

Langkah 1: Memperkenalkan Antara Muka Abstrak

Ganti perisytiharan rakan dengan antara muka kelas yang dipanggil InternalInterface, memisahkan perhubungan rakan kepada kebergantungan langsung dan kebergantungan panggilan pada InternalInterface.

Langkah 2: Alihkan Operasi ke Antara Muka

Kenal pasti operasi yang membentuk kebergantungan panggilan dan alihkannya daripada ClassA ke InternalInterface, meluaskan InternalInterface dengan pembina yang dilindungi dan menandakan persatuan generalisasi ClassA kepada InternalInterface sebagai dilindungi.

Langkah 3: Sambungkan Komponen

ClassAAccessor memerlukan rujukan kepada InternalInterface. Laksanakan kaedah tambahan, attachAccessor(), dalam ClassA dan gunakannya untuk menghantar rujukan kepada InternalInterface kepada ClassAAccessor melalui setInternalInterfaceRef(). Kaedah ini akan dipanggil apabila ClassA::attachAccessor() digunakan.

Pelaksanaan C

<code class="cpp">// ClassAAccessor definition
class ClassAAccessor {
public:
    ClassAAccessor(ClassA& classA);
    void setInternalInterfaceRef(InternalInterface &newValue);
private:  
    InternalInterface* internalInterfaceRef;
};

// Method to set the reference to InternalInterface
ClassA::attachAccessor(ClassAAccessor &accessor) {
    accessor.setInternalInterfaceRef(*this);
}</code>

Peningkatan Pilihan: Memperkenalkan Antaramuka Pelanggan Dalaman

Untuk merungkai pelaksanaan selanjutnya, pertimbangkan untuk memperkenalkan InternalClientInterface lain sebagai perantara antara ClassA dan ClassAAccessor.

Kesimpulan

Dengan mengikuti langkah ini, anda boleh memfaktorkan semula pergantungan rakan dengan berkesan, meningkatkan kestabilan kod, kebolehselenggaraan dan pematuhan kepada amalan terbaik pengekodan. Ingatlah untuk menilai dengan teliti potensi kelemahan yang dikaitkan dengan pendekatan ini sebelum melaksanakannya dalam pangkalan kod anda sendiri.

Atas ialah kandungan terperinci Bagaimana untuk Memfaktorkan Semula Ketergantungan Rakan dalam Kod Anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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