2009-01-20 11 views

Respuesta

15

Visual Studio crea "Program.cs" en estos días, lo que parece bastante razonable. Otro nombre de auto-documentación me gusta es "EntryPoint".

+1

Oooh, me gusta "EntryPoint". El "Programa" me parece ambiguo, aparte de saber que Visual Studio usa el nombre de manera predeterminada. –

+0

me gusta EntryPoint - muy claro –

+0

Sí EntryPoint era lo que siempre se usa en los días antes de Visual Studio empezó a incumplir Programa. Aún así prefiero EntryPoint. –

1

Indico la clase principal después de la aplicación en sí. P.ej. un programa de Calculadora puede tener un "Programa Calculadora" o solo una clase "Calculadora".

Considerando que VS nombra a su clase principal cualquiera que sea el nombre de su aplicación, creo que esto es bastante estándar.

+0

En realidad, lo denomina automáticamente 'Programa' si se trata de una aplicación de consola. – Kev

0

XApplication, donde X es el nombre descriptivo del programa.

1

En Objective-C Cocoa, main() es la función C en sí. Envía un mensaje al objeto NSApplication que representa la aplicación en ejecución.

+0

¿Puede explicarnos algo más a nosotros, las personas que no están familiarizadas con Obj-C Cocoa? ¿Estás diciendo que no hay una clase inicial que se use? –

+0

@ d03boy: Bingo. Lo mismo para C++. No todos los lenguajes de OO son tan obsesivos sobre forzar todo en clases de objetos como Java/C# (y C# lo es cada vez menos). – Shog9

+0

Obj-C es un superconjunto de C. Todo lo que está bien en C también está bien en Obj-C, incluyendo la forma en que se usa main(). – mouviciel

0

Creo que utilice un nombre predeterminado de la lengua sería una buena idea ... otros sabrán que no es el principal()

1

prefiero ConsoleStub.cs para aplicaciones de consola y Core.cs para otra

+0

Normalmente lo llamo Core también. También doy a mis clases nombres abstractos que no tienen nada que ver con su función real (a menos que sea necesario). – BBetances

0

Creo que el programa es un caso convencional. En mi caso, de alguna manera me molesta pensar en el nombre que debería darle al espacio de nombres, especialmente si contiene solo una clase. En ausencia de pautas definitivas para nombrar el espacio de nombres con una sola clase, se me ocurre un patrón como este: Stub para clases abstractas, Impl para implementación, Project para el nombre de dll/exe compilado.

ejemplo:

FootwearRemotingStubProject.dll:

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

FootwearRemotingImplProject.exe:

using FootwearRemotingStubProject; 

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

No estoy seguro de si soy solo yo, pero FootwearRemotingStubProject no me parece muy descriptivo a pesar de que tiene muchas palabras. No estoy seguro por qué. –

+0

De alguna manera estoy de acuerdo, es solo un enfoque interino para mí nombrar a los socios de código Remoting (DLL + EXE [se ejecuta en Mono]). Además, me ayuda a no pensar demasiado cómo nombrar mi clase de manera diferente al espacio de nombres que la contiene. –

0

me gusta "de arranque"

1

El programa parece ser el estándar. Que funciona para mí: D

0

VB.NET:

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

1

principal. El paquete donde está colocado dice el resto.

com.finance.calculator.Main 

y en los principales Sólo tengo:

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

: SI espero no tener que codificar una calculadora de Finanzas: S: S

+0

creo que eso no funcionaría en C#, ya que un método estático principal en la clase principal sería el constructor estático :) – OregonGhost

+0

@OregonGost. De Verdad? ¿Hay una diferencia entre "principal" y "principal" en C#? Además, ¿qué es un constructor estático? : P – OscarRyz

1

Siempre he usado FooLauncher, porque me permite encapsular toda la lógica sobre el análisis de línea de comandos en una clase (en lugar de tratar de incluirlo en un método), lo que también permite una mejor capacidad de prueba. También es mejor segregar las preocupaciones: Foo podría ser algo que utilizas fuera de la línea de comandos, pero FooLauncher está ahí para iniciar el procesamiento de línea de comandos de Foo.

Esto es particularmente importante en una aplicación que en general tiene múltiples herramientas de línea de comandos disponibles: cada uno tiene su propio lanzador. Simplemente diciendo Programa tiene poco sentido si su "programa" tiene múltiples herramientas de línea de comandos.

0

no pongo en una clase. De hecho, ni siquiera uso un método, solo un fragmento de código:

#!/usr/bin/env ruby 

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

Quien votó por esto está equivocado. Ejecute este script de ruby ​​de una sola línea: 'raise 'snafu''. Verá 'foo.rb: 1: in \'

': snafu (RuntimeError) '. El código ya está envuelto en un método "principal" ... –

+0

@smotchkiss: En realidad, 'main' es un objeto * *, no un método. Es el objeto global anónimo en el que se ejecuta todo el código que no está dentro de una clase, módulo o método. –

Cuestiones relacionadas