Seorang teman saya mengatakan kepada saya bahwa, praktik terbaik adalah main
metode yang mengandung kelas harus dinamai Main
dan hanya berisi main
metode. main
Metode juga seharusnya hanya mengurai input, membuat objek lain dan memanggil metode lain. The Main
kelas dan main
metode tidak harus melakukan apa-apa lagi. Pada dasarnya apa yang dia katakan bahwa main
metode yang mengandung kelas harus seperti:
public class Main
{
public static void main(String[] args)
{
//parse inputs
//create other objects
//call methods
}
}
Apakah ini praktik terbaik?
object-oriented
programming-practices
pengguna
sumber
sumber
Jawaban:
Maksud teman Anda adalah bahwa aplikasi seharusnya hanya di-bootstrap dengan metode utama, dan tidak lebih. Dengan memiliki metode utama di kelasnya sendiri, Anda hanya memperkuat fakta itu dengan menjaganya agar tetap independen dari logika aplikasi apa pun. Peran metode utama adalah mengurai input apa pun dan menginisialisasi aplikasi dengan input tersebut, dan mungkin input lainnya.
Idenya adalah Anda tidak perlu metode utama untuk menginisialisasi
Foo
. Ini memungkinkan Anda untuk dengan mudah menginisialisasi dan memulaiFoo
dalam konteks lain, berpotensi dengan semantik yang berbeda.sumber
Metode main () adalah kemunduran yang
burukuntuk pemrograman prosedural, menyediakan titik masuk ke dalam aplikasi. Upaya dilakukan dalam berbagai bahasa pemrograman untuk merangkumnya, tetapi sifatnya membuat ini sulit (harus bersifat publik dan statis, tetapi harus PERNAH dipanggil dari hal lain dalam program, yang sangat kontradiktif). WPF berhasil (dengan menyembunyikan main () dari Anda jauh di dalam usus proyek aplikasi WPF dan menyediakan "kait" yang dapat dikonfigurasi untuk pemrosesan kustom), seperti halnya Java (dengan cara yang serupa untuk aplikasi Android), tetapi WinForms dan sebagian besar jenis lain dari aplikasi masih membuat Anda berurusan dengan main ().Jadi, sebagian besar ahli mengatakan bahwa LOC dari fungsi utama () harus serendah mungkin. Ada satu pendekatan (yang menurut saya sedikit berlebihan) di mana fungsi main () memiliki satu baris:
Ini sedikit banyak, tetapi saya setuju dengan prinsip dasar; main () harus sesedikit mungkin untuk membuat aplikasi Anda yang berorientasi objek dan didorong ke keadaan "siap".
sumber
main
dari konteks lain - misalnya, rekursi.Dalam bahasa yang mendukung fungsi
main
hanyalah fungsi biasa sehingga tidak ada yang bisa Anda lakukan selain dari yang Anda katakan. Dan kemudian ada bahasa-bahasaidiotyang membuang fungsi untuk menjadikan semuanya sebagai objek, yang berarti setiap kali Anda menginginkan fungsi, Anda harus membungkusnya dalam kelas yang tidak perlu .Yah, cukup bertele-tele. Poin yang saya coba buat adalah bahwa
Main
itu bukan kelas, tetapi sebuah fungsi dan jadi Anda seharusnya tidak melakukan apa pun selain input parse, membuat objek lain, dan memanggil metode lain karena hanya itu yang dapat dilakukan fungsi.sumber