Mój przyjaciel powiedział mi, że najlepszą praktyką jest to, że main
metoda zawierająca klasy powinna być nazwana Main
i zawiera tylko main
metodę. Również main
metoda powinna analizować dane wejściowe, tworzyć inne obiekty i wywoływać inne metody. Main
Klasy i main
metody nie powinien robić niczego innego. Zasadniczo to, co mówi, że main
metoda zawierająca klasy powinna wyglądać następująco:
public class Main
{
public static void main(String[] args)
{
//parse inputs
//create other objects
//call methods
}
}
Czy to najlepsza praktyka?
object-oriented
programming-practices
użytkownik
źródło
źródło
Odpowiedzi:
Chodzi o to, że znajomy chce, aby aplikacja była po prostu ładowana przy użyciu głównej metody i nic więcej. Mając główną metodę we własnej klasie, po prostu wzmacniasz ten fakt, utrzymując ją niezależną od logiki aplikacji. Rolą głównej metody byłoby przeanalizowanie dowolnych danych wejściowych i zainicjowanie aplikacji przy użyciu tych i ewentualnie innych danych wejściowych.
Chodzi o to, że nie potrzebujesz głównej metody do inicjalizacji
Foo
. Umożliwia to łatwą inicjalizację i uruchomienieFoo
w innym kontekście, potencjalnie z inną semantyką.źródło
Metoda main () jest
brzydkimpowrotem do programowania proceduralnego, zapewniając punkt wejścia do aplikacji. Podejmowane są próby w różnych wersjach językowych programowania, ale jego natura utrudnia to (musi być publiczny i statyczny, ale NIGDY nie powinien być wywoływany z niczego innego w programie, co jest wysoce sprzeczne). WPF odniósł sukces (ukrywając przed sobą main () głęboko w trzewiach projektu aplikacji WPF i zapewniając konfigurowalne „haki” do niestandardowego przetwarzania), podobnie jak Java (w podobny sposób dla aplikacji na Androida), ale WinForm i większość innych typów aplikacje wciąż sprawiają, że radzisz sobie z main ().Tak więc większość ekspertów twierdzi, że LOC funkcji main () powinien być jak najniższy. Istnieje jedno podejście (które moim zdaniem jest nieco przesadzone), w którym funkcja main () ma jedną linię:
To trochę za dużo, ale zgadzam się z podstawową zasadą; main () powinien możliwie jak najmniej, aby doprowadzić obiektową aplikację sterowaną zdarzeniami do stanu „gotowości”.
źródło
main
z innych kontekstów - na przykład rekurencji.W językach, które obsługują funkcje,
main
jest to zwykła funkcja, więc nie można nic więcej z tym zrobić poza tym, co powiedziałeś. Są też językiidiotyczne, które porzucają funkcje na rzecz tego, aby wszystko było obiektem, co oznacza, że za każdym razem, gdy potrzebujesz funkcji, musisz zawinąć ją w niepotrzebną klasę .Cóż, dość wędrowania. Chodzi mi o to, że
Main
tak naprawdę nie jest to klasa, ale funkcja, więc nie powinieneś nic robić, tylko analizować dane wejściowe, tworzyć inne obiekty i wywoływać inne metody, ponieważ to wszystko, co może zrobić funkcja.źródło