Na przykład w C# lub Java, zawsze masz metodę main() używaną do uruchomienia twojego programu. Jak nazywasz klasę, w której się znajduje? Niektóre pomysły, których chciałbym użyć, to po prostu "Program" lub nazwa samego programu. Co w tym przypadku byłoby konwencjonalne?W języku OO, jak nazywasz swoją klasę, która zawiera metodę Main?
Odpowiedz
Visual Studio tworzy obecnie "Program.cs", co wydaje się całkiem rozsądne. Inną samokonującą nazwą, którą lubię, jest "EntryPoint".
Nazwam główną klasę po samej aplikacji. Na przykład. program kalkulacyjny może mieć "Kalkulator" lub tylko "Kalkulator".
Biorąc pod uwagę, że VS nazywa twoją główną klasę bez względu na to, jak nazywasz swoją aplikację, myślę, że jest to dość standardowe.
To automatycznie nadaje nazwę "Program", jeśli jest to aplikacja konsolowa. – Kev
XApplication, gdzie X jest opisową nazwą programu.
W Objective-C Cocoa, main() jest samą funkcją C. Wysyła ona wiadomość do obiektu NSApplication, który reprezentuje działającą aplikację.
Czy możesz wytłumaczyć dla nas ludzi, którzy nie znają kakao Obj-C? Czy mówisz, że nie używasz pierwszej klasy? –
@ d03boy: Bingo. To samo dotyczy C++. Nie wszystkie języki OO są obsesyjne na punkcie wymuszania wszystkiego na klasach obiektów, ponieważ Java/C# (i C# staje się coraz mniej). – Shog9
Obj-C to nadzbiór C. Wszystko, co jest w porządku w C, jest również w porządku w Obj-C, włączając w to sposób użycia main(). – mouviciel
myślę użyć domyślnej nazwy języka byłoby dobrym pomysłem ... inni będą wiedzieć, że nie jest głównym()
Wolę ConsoleStub.cs dla aplikacji konsolowych i Core.cs dla innych
Ja zwykle nazywam to także Core. Mimo to, nadaję moim klasom również nazwy abstrakcyjne, które nie mają nic wspólnego z jego faktyczną funkcją (chyba że jest to konieczne). – BBetances
Myślę, że Program jest umownym przypadkiem. W moim przypadku bardziej zastanawiam się nad nazwą, którą powinienem nadać przestrzeni nazw, szczególnie jeśli zawiera ona tylko jedną klasę. Wobec braku ostatecznych wytycznych nazewnictwa przestrzeni nazw z tylko jedną klasą, wymyślam następujący wzór: skrót dla klas abstrakcyjnych, Impl dla implementacji, projekt dla nazwy skompilowanej biblioteki dll/exe.
przykład:
FootwearRemotingStubProject.dll:
namespace FootwearRemotingStubProject
{
public class FootwearRemotingStub
{
...
}
}
FootwearRemotingImplProject.exe:
using FootwearRemotingStubProject;
namespace FootwearRemotingImplProject
{
public class FootwearRemotingImpl: FootwearRemotingStub
{
...
}
}
Nie jestem pewien, czy to tylko ja, ale FootwearRemotingStubProject nie brzmi zbyt opisowo, nawet jeśli ma wiele słów. Nie jestem pewien dlaczego. –
Jakoś się zgadzam, to tymczasowe podejście, abym nazwał remoting code-partners (DLL + EXE [działa na Mono]). Pomaga mi też nie myśleć zbyt intensywnie, jak nazwać klasę inaczej niż przestrzeń nazw, która go zawiera. –
Lubię "Uruchomienie"
używam Main lub Main
Ale nie główny, prawda? –
Program wydaje się być standardem. Pracuje dla mnie: D
"Launcher"
VB.NET:
Public Module Main
Public Sub Main(String args())
End Sub
End Module
Główny. Pakiet, w którym jest umieszczony, mówi resztę.
com.finance.calculator.Main
a zasadniczo mam tylko:
public static void main(String [] args) {
FinanceCalculator calc = new FinanceCalculator();
calc.show(); // or start(); or init. or whatever.
}
: SI nadzieję, że nigdy nie trzeba zakodować Kalkulator Finanse: S: S
Myślę, że nie działałoby w języku C#, ponieważ metoda statyczna Main w klasie Main byłby konstruktorem statycznym :) – OregonGhost
@OregonGost. Naprawdę? Czy istnieje różnica między "głównym" i "głównym" w C#? dodatkowo, co to jest konstruktor statyczny? : P – OscarRyz
Zawsze stosować FooLauncher, bo pozwala mi hermetyzować całą logikę na temat parsowania wiersza poleceń w jednej klasie (zamiast próbować uzyskać ją w jedną metodę), co również pozwala na lepszą testowalność. Lepsza jest także segregacja problemów: Foo może być czymś, czego używasz poza linią poleceń, ale FooLauncher jest tam, aby uruchomić Foo z danym przetwarzaniem linii poleceń.
Jest to szczególnie ważne w przypadku aplikacji, w której ogólnie dostępnych jest wiele narzędzi wiersza polecenia: każdy ma własny program uruchamiający. Mówienie Program ma niewielki sens, jeśli twój "program" ma wiele narzędzi wiersza poleceń.
Nie umieszczam tego w klasie. W rzeczywistości nie używam nawet metody, tylko fragment kodu:
#!/usr/bin/env ruby
puts 'Look Ma, no class, no method!'
Ktokolwiek to głosował, jest w błędzie. Wykonaj ten jednoliniowy skrypt ruby: "podnieś" snafu''. Zobaczysz 'foo.rb: 1: in \'
@smotchkiss: Właściwie, 'main' to * obiekt *, a nie metoda. Jest to anonimowy obiekt globalny, w którym wykonywany jest cały kod, który nie znajduje się w klasie, module lub metodzie. –
- 1. Jak nazywasz klasę Dart?
- 2. W jaki sposób środowisko wykonawcze wie, która klasa zawiera główną metodę w aplikacji C#?
- 3. C# Zawiera metodę
- 4. Scala: Czy można wskazać klasę ogólną, która implementuje określoną metodę?
- 5. Gdzie powinienem umieścić publiczną metodę statyczną void main (String [] args)?
- 6. jak działa int main() i void main()
- 7. Jak utworzyć klasę, która również jest listą?
- 8. Jak utworzyć klasę, która buforuje obiekty?
- 9. uzyskać aktualną klasę i metodę?
- 10. JavaScript - w jaki sposób Disqus obsługuje swoją funkcję "disqus_config", która zawiera niezdefiniowaną właściwość?
- 11. Jak zaimplementować klasę abstrakcyjną w języku F #?
- 12. Co nazywasz funkcją, która zwraca ten sam wynik co wejście?
- 13. Jak utworzyć strukturę, która zawiera własną listę?
- 14. Jak mogę wywołać metodę async Go na przykład Main()?
- 15. Co nazywasz operatorem &: w Ruby?
- 16. Jak nazywasz i organizujesz wyjątki?
- 17. Jak nazywasz elementy interfejsu użytkownika?
- 18. PHP zawiera klasę w innej klasie
- 19. Czy można napisać klasę Ping w języku C#, która będzie działać w środowisku Windows 8 Metro?
- 20. Jak znaleźć klasę zawierającą udekorowaną metodę w Pythonie
- 21. Dynamicznie skomponuj klasę w języku C#
- 22. Kiedy użyć tego w javascript OO?
- 23. Jak powinienem nazwać metodę, która to robi ...?
- 24. Jak wywołać metodę nadpisania, która ma przeciążenia?
- 25. Moq.Mock - jak ustawić metodę, która przyjmuje wyrażenie
- 26. Czy mamy metodę "Zawiera" w IEnumerable
- 27. Przetestuj funkcję, która zawiera setTimeout()
- 28. Jak napisać ogólną klasę kontenera, która implementuje dany interfejs w języku C#?
- 29. Zdefiniuj metodę, która jest zamknięciem w Ruby
- 30. Jak zadeklarować klasę w języku C#, aby móc łańcuch metod?
Oooh, lubię "EntryPoint". "Program" wydaje mi się niejednoznaczny, poza wiedzą, że Visual Studio domyślnie używa nazwy. –
Podobają mi się EntryPoint - bardzo jasne –
Yup EntryPoint było tym, z czego zawsze korzystałem w czasach, gdy Visual Studio zaczęło domyślnie programować. Nadal jednak wolą EntryPoint. –