Pertanyaan yang diberi tag «solid»

Mnemonik untuk serangkaian prinsip desain: Tanggung jawab tunggal, Terbuka-tertutup, penggantian Liskov, Pemisahan antarmuka, Pembalikan ketergantungan

5
Apakah kontrak semantik antarmuka (OOP) lebih informatif daripada tanda tangan fungsi (FP)?
Dikatakan oleh beberapa orang bahwa jika Anda mengambil prinsip-prinsip SOLID secara ekstrem, Anda berakhir pada pemrograman fungsional . Saya setuju dengan artikel ini, tetapi saya berpikir bahwa beberapa semantik hilang dalam transisi dari antarmuka / objek ke fungsi / penutupan, dan saya ingin tahu bagaimana Pemrograman Fungsional dapat mengurangi kerugian. …

5
Bagaimana cara menerapkan prinsip Segregasi Antarmuka dalam C?
Saya memiliki modul, katakan 'M', yang memiliki beberapa klien, katakan 'C1', 'C2', 'C3'. Saya ingin membagi namespace modul M, yaitu deklarasi API dan data yang dipaparkannya, ke dalam file header sedemikian rupa sehingga - untuk klien mana pun hanya data dan API yang diperlukannya yang terlihat; sisa namespace modul disembunyikan …
15 c  interfaces  solid 

4
Apakah pengembangan berbasis tes memaksa saya untuk mengikuti SOLID?
Saya mendengar banyak dari praktisi TDD bahwa salah satu keuntungan TDD adalah memaksa pengembang untuk mengikuti prinsip-prinsip SOLID (Tanggung jawab tunggal, Open-closed, substitusi Liskov, segregasi Antarmuka, dan inversi Ketergantungan). Tetapi bagi saya itu cukup dengan hanya menulis beberapa tes (terutama tes unit) untuk memahami adalah penting untuk mengikuti SOLID (dan …


2
Dunia Nyata - Prinsip Pergantian Liskov
Latar Belakang: Saya sedang mengembangkan kerangka kerja pengiriman pesan. Kerangka kerja ini akan memungkinkan: pengiriman pesan melalui bus layanan berlangganan antrian di bus pesan berlangganan topik pada bus pesan Kami saat ini menggunakan RabbitMQ, tapi saya tahu kami akan pindah ke Microsoft Service Bus (on Premise) dalam waktu dekat. Saya …

4
Seberapa spesifik seharusnya pola Tanggung Jawab Tunggal untuk kelas?
Sebagai contoh, misalkan Anda memiliki program permainan konsol, yang memiliki semua jenis metode input / output ke dan dari konsol. Apakah akan pintar untuk menjaga mereka semua dalam satu inputOutputkelas atau istirahat mereka turun ke kelas khusus lebih seperti startMenuIO, inGameIO, playerIO, gameBoardIO, dll sehingga setiap kelas memiliki sekitar 1-5 …

3
Cara mematuhi prinsip terbuka-tertutup dalam praktik
Saya mengerti maksud dari prinsip buka-tutup. Ini dimaksudkan untuk mengurangi risiko melanggar sesuatu yang sudah berfungsi saat memodifikasinya, dengan memberitahu Anda untuk mencoba memperluas tanpa memodifikasi. Namun, saya kesulitan memahami bagaimana prinsip ini diterapkan dalam praktik. Menurut pemahaman saya, ada dua cara untuk menerapkannya. Sebelumnya dan setelah perubahan yang memungkinkan: …


1
Bagaimana cara memverifikasi prinsip substitusi Liskov dalam hierarki warisan?
Terinspirasi oleh jawaban ini : Prinsip Pergantian Liskov mensyaratkan itu Prasyarat tidak dapat diperkuat dalam subtipe. Postconditions tidak dapat dilemahkan dalam subtipe. Invarian tipe supertipe harus dipertahankan dalam subtipe. Batasan sejarah ("aturan sejarah"). Objek dianggap dapat dimodifikasi hanya melalui metode mereka (enkapsulasi). Karena subtipe dapat memperkenalkan metode yang tidak ada …

2
Stack memperpanjang LinkedList. Pelanggaran Prinsip Pergantian Liskov?
Kelas LinkedList ada dengan fungsi-fungsi seperti add_first (), add_last (), add_after (), remove_first (), remove_last (), dan remove () Sekarang ada kelas Stack yang menyediakan fungsionalitas seperti push (), pop (), peek () atau top (), dan untuk mengimplementasikan metode ini ia memperluas metode kelas LinkedList. Apakah ini merupakan pelanggaran …



3
Prinsip Ketergantungan Inversi: Bagaimana mendefinisikan "kebijakan tingkat tinggi" dan "detail tingkat rendah" untuk orang lain?
Saya mencoba menjelaskan prinsip inversi ketergantungan kepada kolega saya (kebanyakan junior). Bagaimana kita dapat mendefinisikan mana yang merupakan "kebijakan tingkat tinggi" dan mana yang merupakan "detail tingkat rendah" dalam suatu perangkat lunak? Misalnya, jika perangkat lunak kami mengotomatiskan alur kerja beberapa aplikasi bisnis, mengapa kami mengatakan bahwa otomatisasi alur kerja …

1
Apakah membungkus kode pihak ketiga satu-satunya solusi untuk menguji unit konsumennya?
Saya sedang melakukan pengujian unit dan di salah satu kelas saya, saya perlu mengirim email dari salah satu metode, jadi menggunakan injeksi konstruktor saya menyuntikkan contoh Zend_Mailkelas yang ada di kerangka Zend. Sekarang beberapa orang berpendapat bahwa jika perpustakaan cukup stabil dan tidak akan sering berubah maka tidak perlu membungkusnya. …

3
Menerapkan prinsip-prinsip SOLID
Saya cukup baru dengan prinsip-prinsip desain SOLID . Saya memahami sebab dan manfaatnya, tetapi saya gagal menerapkannya pada proyek yang lebih kecil yang ingin saya refactor sebagai latihan praktis untuk menggunakan prinsip-prinsip SOLID. Saya tahu tidak perlu mengubah aplikasi yang berfungsi dengan sempurna, tetapi saya tetap ingin mengubahnya jadi saya …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.