c# - referencia - el nombre del tipo o del espacio de nombres xamarin no se encontro
Espacio de nombres del proyecto de código abierto C# (9)
Si puede permitirse cambiarlo más tarde, iría con MyName.MyTool . Si usted es la única persona que escribe la herramienta, necesita un crédito completo, y tener su nombre en el espacio de nombres no hace daño a nadie.
Si acepta nuevos contribuyentes, puede eliminar su nombre del espacio de nombres, pero solo si otras personas realmente hicieron una gran contribución. Si la mayoría del trabajo es suyo, lo dejaría en.
Estoy considerando lanzar una de mis bibliotecas de clase escritas en C # como fuente abierta. Antes de hacer eso, estoy tratando de hacer algunas refactorizaciones para que satisfagan las demandas del público en general :)
Me pregunto cuál sería el mejor esquema de espacio de nombres para usar? Básicamente, veo las siguientes opciones:
- espacio de nombres MyTool : Esto realmente no parece organizado para mí. Quiero decir, (casi) todos los espacios de nombres en .NET Framework tienen el prefijo System, así que supongo que no es una forma estándar de hacerlo.
- namespace MyOrganization.MyTool : El problema con eso simplemente no es "MyOrganization". Está escrito en mi tiempo libre.
- namespace MyName.MyTool : Preferiría algo más humilde. Quiero decir realmente, no quiero tener mi nombre en el espacio de nombres.
Ahora hay un par de preguntas relacionadas en Stackoverflow, como esta y esta , pero ninguna de ellas realmente responde mi pregunta.
¿Alguna sugerencia?
MyTool
tiene el problema de que los nombres no son únicos; te estás dirigiendo a conflictos de nombres. MyCompany.MyTool
no se aplica en su caso si no desea entregarse una etiqueta.
En realidad, prefiero la convención de Java de invertir el URI asociado con el producto. Para las empresas, este es el sitio web de la compañía. Para usted, ¿tiene un blog / página de inicio personal cuya dirección no cambiará pronto? Luego use el nombre, con TLD y dominio de segundo nivel invertido. En mi caso: net.madrat.MyTool
.
Conozco a algunas personas que usan TheirName.MyTool
que está bien. Sin embargo, esto se convierte en un problema tan pronto como haya un segundo colaborador.
MyTool suena muy parecido al código del proyecto / marca?
En ese caso, si desea categorizarlo aún más sin utilizar su organización o nombre personal, enganche la industria o el dominio del problema al que debe dirigirse.
VideoEditing.MyTool
Accounting.MyTool
HomeAutomation.MyTool
MyOrganization.Technology sigue siendo la forma recomendada de iniciar el espacio de nombres con.
Solía tener un problema similar de namespacing a mi afición a los proyectos antes. Así que acabo de crear el nombre para el grupo de desarrollo de uno (desea tener uno corto y legible) y comencé a usarlo.
Sin embargo, tenga en cuenta que la usabilidad sigue siendo la clave. Por ejemplo, aquí hay una excepción de la regla. Nuestras bibliotecas compartidas Lokad de código abierto están siguiendo el espacio de nombres de .NET en sí (es decir: System o System.Threading ). Esto se debe a que hay numerosos ayudantes y extensiones diarias que deberían estar disponibles para nuestros desarrolladores sin siquiera darse cuenta de que están aprovechando el código que no es BCL.
También hace que las declaraciones de uso se vean mejor.
Yo iría con algo como:
namespace OpenSourceProjectCodeName.MajorFunctionalArea
Por ejemplo:
namespace VideoWizardMagicThing.Audio
namespace VideoWizardMagicThing.Audio.Codecs
namespace VideoWizardMagicThing.Video
namespace VideoWizardMagicThing.Video.Codecs
No tiene que enojarse completamente con espacios de nombres y todo lo que necesita es uno o dos de MajorFunctionalArea. Sin embargo, sin saber cómo está estructurado el proyecto o qué es lo que hace, es difícil de decir.
Podría hacer MyToolProject.MyTool. O bien, podría obtener un nombre creativo para su "organización" y simplemente tenerlo como cuáles serán todos sus futuros proyectos de código abierto, incluso si es solo uno en este momento. Entonces podrías tener MyCreativeOrgName.MyTool.
Si es de código abierto y habrá colaboradores, escogería MyTool .
Terminé con Idunno. * Para un par de proyectos (mi sitio web) y SharpSTS. * Para el principal (como ese es el nombre del proyecto)
Sugeriría obtener una MyOrganization y usarla. Si alguna vez acepta dinero para el trabajo, va a necesitar una entidad y podría protegerlo de responsabilidad. Es bastante fácil configurar algo.
O simplemente use un nombre de MyOrganization y cree la entidad más adelante, pero corre el riesgo de conflictos de nombres legales, etc., si no lo configura primero.