2009-01-20 3 views

Antwort

15

Visual Studio erstellt "Program.cs" in diesen Tagen, die ziemlich vernünftig scheint. Ein weiterer selbst dokumentierender Name, den ich mag, ist "EntryPoint".

+1

Oooh, ich mag "EntryPoint". "Programm" scheint mir mehrdeutig, abgesehen davon, dass Visual Studio den Namen standardmäßig verwendet. –

+0

Ich mag EntryPoint - sehr klar –

+0

Yup EntryPoint war das, was ich immer in den Tagen verwendet habe, bevor Visual Studio mit dem Programmieren anfing. Trotzdem bevorzugen wir den EntryPoint. –

1

Ich benenne die Hauptklasse nach der Anwendung selbst. Z.B. Ein Rechnerprogramm kann eine "CalculatorProgram" oder nur eine "Calculator" Klasse haben.

In Anbetracht der Tatsache, dass VS Ihre Hauptklasse, was auch immer Sie Ihre Anwendung nennen, Namen, denke ich, das ist ziemlich Standard.

+0

Es tatsächlich benennt es automatisch "Programm", wenn es eine Konsole appy ist. – Kev

0

XApplication, wobei X ein beschreibender Name des Programms ist.

1

In Objective-C Cocoa ist main() die C-Funktion. Er sendet eine Nachricht an das Objekt NSApplication, das die ausgeführte Anwendung darstellt.

+0

Können Sie uns etwas mehr erklären, die mit Obj-C Cocoa nicht vertraut sind? Sagen Sie, dass es keine anfängliche Klasse gibt, die verwendet wird? –

+0

@ d03boy: Bingo. Dasselbe gilt für C++. Nicht alle OO-Sprachen sind so obsessiv, alles in Objektklassen wie Java/C# zu zwingen (und C# wird immer weniger). – Shog9

+0

Obj-C ist eine Obermenge von C. Alles, was in C OK ist, ist auch in Obj-C OK, einschließlich der Art, wie main() verwendet wird. – mouviciel

0

Ich verwenden die Standardnamen der Sprache denke, wäre eine gute Idee sein ... andere wissen, dass es das Haupt ist()

1

Ich ziehe ConsoleStub.cs für Konsolenanwendungen und Core.cs für andere

+0

Ich nenne es normalerweise auch Core. Ich gebe meinen Klassen auch abstrakte Namen, die aber nichts mit ihrer eigentlichen Funktion zu tun haben (außer wenn es notwendig ist). – BBetances

0

Ich denke, Programm ist ein herkömmlicher Fall. In meinem Fall bin ich eher daran interessiert, über den Namen nachzudenken, den ich Namespace geben sollte, besonders wenn es nur eine Klasse enthält. In Ermangelung definitiver Richtlinien für die Namensgebung von Namespaces mit nur einer Klasse, habe ich ein Muster wie dieses: Stub für abstrakte Klassen, Impl für die Implementierung, Projekt für den Namen der kompilierten DLL/EXE.

Beispiel:

FootwearRemotingStubProject.dll:

namespace FootwearRemotingStubProject 
{ 
    public class FootwearRemotingStub 
    { 
     ... 
    } 
} 

FootwearRemotingImplProject.exe:

using FootwearRemotingStubProject; 

namespace FootwearRemotingImplProject 
{ 
    public class FootwearRemotingImpl: FootwearRemotingStub 
    { 
     ... 
    } 
} 
+1

Ich bin nicht sicher, ob es nur ich bin, aber FootwearRemotingStubProject klingt für mich nicht sehr beschreibend, obwohl es viele Wörter hat. Ich bin mir nicht sicher warum. –

+0

Ich stimme irgendwie zu, es ist nur ein vorläufiger Ansatz für mich Remoting Code-Partner zu nennen (DLL + EXE [läuft auf Mono]). Außerdem hilft es mir, nicht zu sehr darüber nachzudenken, wie ich meine Klasse anders benennen soll als den Namensraum, der sie enthält. –

1

Programm scheint der Standard zu sein. Funktioniert bei mir: D

0

VB.NET:

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

1

Main. Das Paket, in dem es sich befindet, sagt den Rest.

com.finance.calculator.Main 

Und im Haupt Ich habe nur:

public static void main(String [] args) { 
    FinanceCalculator calc = new FinanceCalculator(); 
    calc.show(); // or start(); or init. or whatever. 
} 

: SI hoffe, ich habe nie einen Finanzrechner-Code: S: S

+0

Ich denke, das würde in C# nicht funktionieren, da eine statische Methode Main in der Klasse Main wäre der statische Konstruktor :) – OregonGhost

+0

@OregonGost. "Ja wirklich?" Gibt es einen Unterschied zwischen "Main" und "Main" in C#? Was ist ein statischer Konstruktor? : P – OscarRyz

1

ich immer FooLauncher verwendet haben, weil es erlaubt es mir, die gesamte Logik des Befehlszeilen-Parsens in einer Klasse zu kapseln (anstatt es in eine Methode zu bringen), was auch eine bessere Testbarkeit ermöglicht. Es ist auch eine bessere Trennung von Bedenken: Foo könnte etwas sein, das du außerhalb der Kommandozeile benutzt, aber FooLauncher ist da, um Foo gegebene Kommandozeilenverarbeitung zu starten.

Dies ist besonders wichtig in einer Anwendung, die insgesamt mehrere Befehlszeilen-Tools zur Verfügung hat: Jeder hat seinen eigenen Launcher. Nur zu sagen Programm macht wenig Sinn, wenn Ihr "Programm" mehrere Kommandozeilen-Tools hat.

0

Ich lege es nicht in eine Klasse. Tatsächlich verwende ich nicht einmal eine Methode, nur ein Code-Schnipsel:

#!/usr/bin/env ruby 

puts 'Look Ma, no class, no method!' 
+0

Wer das gewählt hat, liegt falsch. Führen Sie dieses Ein-Zeilen-Ruby-Skript aus: 'raise 'snafu'. Sie sehen 'foo.rb: 1: in \ '

': snafu (RuntimeError)'. Der Code ist bereits in einer "Haupt" -Methode verpackt ... –

+0

@smotchkiss: Eigentlich ist 'main' ein * Objekt *, keine Methode. Es ist das anonyme globale Objekt, in dem der gesamte Code ausgeführt wird, der nicht in einer Klasse, einem Modul oder einer Methode enthalten ist. –

Verwandte Themen