Convenciones de nomenclatura para archivos de clases parciales

93

Estoy generando la mayor parte de mi código de scaffolding ASP.NET MVC. Todos los archivos generados son clases parciales que utilizan convenciones de nomenclatura estándar. Por ejemplo, mi archivo de controlador de empleados se llama EmployeeController.cs. Si deseo extender el EmployeeController con lógica personalizada no generada, creo un segundo archivo de clase parcial llamado EmployeeControllerCustom.cs. Separo la lógica personalizada y generada en dos archivos diferentes para que la próxima vez que genere el EmployeeController, mis cambios personalizados no se sobrescriban. Agregar el sufijo "Personalizado" al nombre del archivo me parece razonable, pero ¿hay una convención de nomenclatura de archivos de clase parcial más establecida que debería seguir?

Ben Griswold
fuente

Respuestas:

152

Yo uso la .separación, por ejemplo EmployeeController.SomeSpecialBehaviour.cs. También lo vinculo al árbol del proyecto a través de "pendentUpon "o lo que sea que esté en el csproj, de modo que se anide debajo del archivo (en el explorador de soluciones) ordenadamente. Tienes que hacerlo a mano (edita el csproj) o con un complemento; por ejemplo:

<Compile Include="Subfolder/Program.cs" />
<Compile Include="Subfolder/Program.Foo.cs">
  <DependentUpon>Program.cs</DependentUpon> <!-- Note that I do not reference the subfolder here -->
</Compile>

aparece como:

  • Subcarpeta
    • Program.cs
      • Program.Foo.cs
Marc Gravell
fuente
5
La sugerencia de DependentUpon es realmente genial y funciona muy bien. Gracias por anotar. Si leo correctamente, no use simplemente un sufijo estándar como "Personalizado". Su sufijo siempre expresa la intención de la funcionalidad del archivo de clase parcial. Además, ¿hay alguna razón por la que usa el. separación opuesta a la carcasa? ¿El. proporcionar algo más que una mejor legibilidad? Gracias.
Ben Griswold
11
Correcto: el nombre del archivo indica la intención del código en esa parte . Entonces, si estoy implementando una interfaz exótica (y manteniendo el código separado), podría serlo SomeType.ICustomTypeDescriptor.cs. El .(IMO) separa las dos cosas: el tipo real ( SomeType) y la intención ICustomTypeDescriptor- ambos ya están completamente en mayúsculas; además, SomeForm.Designer.csencaja perfectamente con cosas como ;-p
Marc Gravell
Perfecto. Gracias por la información adicional. Si pudiera hacer algo más que votar a favor, su respuesta y marca es tan correcta que lo haría.
Ben Griswold
1
@Marc Gravell: ¿por casualidad conoce alguna extensión VS que brinde la funcionalidad de configurar DependentUpon para archivos?
Dyppl
2
@Dyppl La extensión FileNesting puede hacer esto
gt
15

Para agregar a la respuesta de Marc Gravell ♦, tuve una situación con archivos en una subcarpeta y el DependentUponnodo se ignoraba. En resumen, en tal caso, mi xml tenía que ser:

<Compile Include="foo\bar.cs" />
<Compile Include="foo\bar.baz.cs">
    <DependentUpon>bar.cs</DependentUpon>  <!-- Note that I do not reference the subfolder here -->
</Compile>

Espero que esto ayude a alguien :)

Uno sin nombre
fuente
yo también. sucedió porque comencé el proyecto en la base de datos primero y cuando creó el modelo, los colocó dentro del diagrama del modelo. VS2015 si marca la diferencia para alguien.
Joshua K