Ini tentang efek samping.
Bertanya apakah var1
bagian dari negara meleset dari pertanyaan ini. Tentu jika var1
harus bertahan, itu harus menjadi contoh. Salah satu pendekatan dapat dilakukan untuk bekerja apakah diperlukan kegigihan atau tidak.
Pendekatan efek samping
Beberapa variabel instan hanya digunakan untuk berkomunikasi antara metode pribadi dari panggilan ke panggilan. Variabel instance semacam ini dapat di-refactored dari keberadaannya tetapi tidak harus demikian. Terkadang hal-hal menjadi lebih jelas. Tapi ini bukan tanpa risiko.
Anda membiarkan variabel keluar dari cakupannya karena digunakan dalam dua cakupan pribadi yang berbeda. Bukan karena itu diperlukan dalam ruang lingkup Anda menempatkannya. Ini bisa membingungkan. "Global itu jahat!" tingkat membingungkan. Ini bisa berhasil tetapi tidak akan skala dengan baik. Ini hanya berfungsi di yang kecil. Tidak ada benda besar. Tidak ada rantai pewarisan panjang. Jangan menyebabkan efek yo yo .
Pendekatan fungsional
Sekarang, bahkan jika var1
harus bertahan tidak ada yang mengatakan Anda harus menggunakan jika untuk setiap nilai sementara mungkin diperlukan sebelum mencapai kondisi yang Anda inginkan dipertahankan antara panggilan publik. Itu berarti Anda masih dapat menetapkan var1
contoh menggunakan metode yang lebih fungsional.
Jadi bagian dari keadaan atau tidak, Anda masih bisa menggunakan pendekatan mana pun.
Dalam contoh-contoh ini, 'var1' tidak mengandung apa-apa selain debugger Anda tahu itu ada. Saya kira Anda melakukannya dengan sengaja karena Anda tidak ingin membuat kami bias. Untungnya saya tidak peduli yang mana.
Risiko efek samping
Yang mengatakan, saya tahu dari mana pertanyaan Anda berasal. Saya telah bekerja di bawah warisan yo yo ing menyedihkan yang mengubah variabel contoh di berbagai tingkatan dalam berbagai metode dan pergi dengan tupai mencoba mengikutinya. Inilah risikonya.
Ini adalah rasa sakit yang mendorong saya ke pendekatan yang lebih fungsional. Suatu metode dapat mendokumentasikan dependensi dan output dalam tanda tangannya. Ini adalah pendekatan yang kuat dan jelas. Ini juga memungkinkan Anda mengubah apa yang Anda lewati metode pribadi sehingga lebih dapat digunakan kembali di dalam kelas.
Kelebihan efek samping
Ini juga membatasi. Fungsi murni tidak memiliki efek samping. Itu bisa menjadi hal yang baik tetapi tidak berorientasi objek. Sebagian besar orientasi objek adalah kemampuan untuk merujuk pada konteks di luar metode. Melakukan itu tanpa membocorkan global di sini dan pergi adalah kekuatan OOP. Saya mendapatkan fleksibilitas global tetapi terkandung dengan baik di kelas. Saya dapat memanggil satu metode dan memutasikan setiap variabel instan sekaligus jika saya mau. Jika saya melakukan itu, saya berkewajiban untuk setidaknya memberikan nama metode yang membuat jelas apa yang terserah sehingga orang tidak akan terkejut ketika itu terjadi. Komentar dapat membantu juga. Terkadang komentar ini diformalkan sebagai "kondisi posting".
Kelemahan dari metode pribadi yang fungsional
Pendekatan fungsional membuat beberapa dependensi menjadi jelas. Kecuali jika Anda menggunakan bahasa fungsional murni, itu tidak dapat mengesampingkan dependensi tersembunyi. Anda tidak tahu, hanya melihat tanda tangan metode, bahwa itu tidak menyembunyikan efek samping dari Anda di sisa kode itu. Anda tidak melakukannya.
Posting kondisional
Jika Anda, dan semua orang di tim, andal mendokumentasikan efek samping (kondisi sebelum / pasca) dalam komentar, maka keuntungan dari pendekatan fungsional jauh lebih sedikit. Ya saya tahu, teruslah bermimpi.
Kesimpulan
Secara pribadi saya cenderung ke arah metode privat fungsional dalam kedua kasus jika saya bisa, tapi jujur itu sebagian besar karena komentar efek sampingan pra / pasca bersyarat tidak menyebabkan kesalahan kompiler ketika mereka sudah ketinggalan zaman atau ketika metode yang disebut rusak. Kecuali saya benar-benar membutuhkan kelenturan efek samping, saya lebih baik mengetahui bahwa semuanya berjalan baik.