Gagasan dasarnya adalah bahwa "bidang" (variabel tingkat instance) yang dinyatakan sebagai terproteksi mungkin lebih terlihat daripada seharusnya, dan lebih sedikit "terlindungi" daripada yang mungkin Anda inginkan. Tidak ada pengubah akses di C / C ++ / Java / C # yang setara dengan "hanya dapat diakses oleh kelas anak dalam rakitan yang sama", sehingga memberi Anda kemampuan untuk menentukan anak-anak Anda sendiri yang dapat mengakses bidang di rakitan Anda, tetapi tidak mengizinkan anak-anak yang dibuat di majelis lain akses yang sama; C # memiliki pengubah internal dan terlindungi, tetapi menggabungkan mereka membuat akses "internal atau dilindungi", bukan "internal dan dilindungi". Jadi, bidang yang dilindungi dapat diakses oleh anak mana pun, baik Anda menulisnya atau orang lain melakukannya. Dengan demikian dilindungi adalah pintu terbuka bagi seorang peretas.
Juga, bidang menurut definisi mereka tidak memiliki validasi yang melekat dalam mengubahnya. di C # Anda dapat membuat satu hanya baca, yang membuat tipe nilai secara efektif konstan dan tipe referensi tidak dapat diinisialisasi ulang (tapi masih sangat bisa berubah), tapi hanya itu saja. Dengan demikian, bahkan dilindungi, anak-anak Anda (yang tidak dapat Anda percayai) memiliki akses ke bidang ini dan dapat mengaturnya untuk sesuatu yang tidak valid, membuat keadaan objek tidak konsisten (sesuatu yang harus dihindari).
Cara yang diterima untuk bekerja dengan bidang adalah menjadikannya pribadi dan mengaksesnya dengan properti, dan / atau metode pengambil dan penyetel. Jika semua konsumen kelas membutuhkan nilainya, jadikan pengambil (setidaknya) publik. Jika hanya anak-anak yang membutuhkannya, buat rajin rajin rajin
Pendekatan lain yang menjawab pertanyaan adalah bertanya pada diri sendiri; mengapa kode dalam metode anak memerlukan kemampuan untuk mengubah data keadaan saya secara langsung? Apa yang dikatakan tentang kode itu? Itulah argumen "jarak vertikal" di wajahnya. Jika ada kode pada seorang anak yang harus secara langsung mengubah status induk, maka mungkin kode itu harus menjadi milik orangtua di tempat pertama?