2009-01-20 5 views

Odpowiedz

15

Visual Studio tworzy obecnie "Program.cs", co wydaje się całkiem rozsądne. Inną samokonującą nazwą, którą lubię, jest "EntryPoint".

+1

Oooh, lubię "EntryPoint". "Program" wydaje mi się niejednoznaczny, poza wiedzą, że Visual Studio domyślnie używa nazwy. –

+0

Podobają mi się EntryPoint - bardzo jasne –

+0

Yup EntryPoint było tym, z czego zawsze korzystałem w czasach, gdy Visual Studio zaczęło domyślnie programować. Nadal jednak wolą EntryPoint. –

1

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.

+0

To automatycznie nadaje nazwę "Program", jeśli jest to aplikacja konsolowa. – Kev

0

XApplication, gdzie X jest opisową nazwą programu.

1

W Objective-C Cocoa, main() jest samą funkcją C. Wysyła ona wiadomość do obiektu NSApplication, który reprezentuje działającą aplikację.

+0

Czy możesz wytłumaczyć dla nas ludzi, którzy nie znają kakao Obj-C? Czy mówisz, że nie używasz pierwszej klasy? –

+0

@ 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

+0

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

0

myślę użyć domyślnej nazwy języka byłoby dobrym pomysłem ... inni będą wiedzieć, że nie jest głównym()

1

Wolę ConsoleStub.cs dla aplikacji konsolowych i Core.cs dla innych

+0

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

0

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 
    { 
     ... 
    } 
} 
+1

Nie jestem pewien, czy to tylko ja, ale FootwearRemotingStubProject nie brzmi zbyt opisowo, nawet jeśli ma wiele słów. Nie jestem pewien dlaczego. –

+0

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. –

1

Program wydaje się być standardem. Pracuje dla mnie: D

0

VB.NET:

Public Module Main
Public Sub Main(String args())
End Sub
End Module

1

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

+0

Myślę, że nie działałoby w języku C#, ponieważ metoda statyczna Main w klasie Main byłby konstruktorem statycznym :) – OregonGhost

+0

@OregonGost. Naprawdę? Czy istnieje różnica między "głównym" i "głównym" w C#? dodatkowo, co to jest konstruktor statyczny? : P – OscarRyz

1

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ń.

0

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!' 
+0

Ktokolwiek to głosował, jest w błędzie. Wykonaj ten jednoliniowy skrypt ruby: "podnieś" snafu''. Zobaczysz 'foo.rb: 1: in \'

': snafu (RuntimeError) '. Kod jest już zapakowany w "główną" metodę ... –

+0

@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. –

Powiązane problemy