Quizá lo que pregunte esté medio loco... pero me pregunto ¿Impondrías un sistema de versión o algun criterio de identificación a un documento en el que se define los criterios de nomenclatura a usar en tu código y en el de tu equipo? ¿O esto es ya ir demasiado lejos y liarse demasiado?
Veran... yo tengo definido ya una forma (un sistema o método, como prefieran llamarlo) de como nombrar mis clases, variables, tipos, etc. pero en ocasiones me he visto condicionado a ir mejorándolo o cambiando algunas de sus reglas para adaptarse a nuevas cosas... como por ejemplos esto de los Helpers, Numerators, Genéricos, que fueron incorporándose al lenguaje.
Mi método tiene como una de sus reglas bases que se debe respetar el estándar Object Pascal que tanto Delphi como Lazarus se esfuerzan en seguir, la segunda regla base es que prima los nombres que derivan del contexto y/o las referencias de consultas (como ser libros, artículos, palabras técnicas propias del ambiente, siglas estándars, etc)
Pero adicionalmente cada quien adereza las cosas según su experiencia, necesidades, etc. Y esto es fundamental hacerlo bien para que en el día de mañana cuando uno lea el nombre de algo le sea aclaratorio y no que le suene confuso. Porque luego puede pasar que ve un identificador llamado de cierta forma y al mes siguiente se encuentra que le "hace ruido".
Cambiarlo sobre la marcha, y sin un criterio establecido medianamente formal hace que llegue el momento en el que todo termina "sonando mal" y el estilo que hemos planteado inicialmente ha sido destrozado. Se pone peor cuando en un proyecto decidimos hacerlo como X, y luego en otro cambiamos por simple gusto a uno Z.
A mi me ha pasado, y es por ello que me he llegado a preguntar si no estaría mal llevar alguna especie de versión, como para lograr establecer algún control.
Algo como para decir: "A partir de la fecha xx/yy/zz a los identificadores de variables se debe aplicar la regla pp de desempate de nombre" o poder incluso asociar los cambios que uno efectúa en el código: "Se ha cambiado el nombre de la clase TPersons por TPersonList según la sugerencia dada por la regla mm que establece que los objetos que forman una lista o agrupación tengan el sufijo List" y dar peso a nuestras decisiones que afecten el diseño.
El otro motivo por el que he llegado a pensar que tuviera sentido ponerle algún sistema de versión es poder llegar a saber en que momento es que se ha pasado de un criterio a otro. Llevarlo de forma consciente. Sobre todo cuando en el medio hemos estado haciendo cambio de versiones a nuestras units, etc:
12/12/2016 Unidad: UStocks v: 1.2.3.4 - Nomeclatura v: 1.1
15/12/2016 Se añadieron nuevas reglas al documento de Nomeclatura. Cambió a la versión v 1.2
16/12/2016 Unidad UStocks v: 1.2.3.5 - Nomeclatura v: 1.2 Motivo: El documento v.1.2 promueve cambios que afectaron la unidad. Se aconseja subir el número de version menor por adaptarse a la nueva nomeclatura.
23/12/2016 Unidad UStocks v: 1.3.1.0 - Nomeclatura v: 1.2
....
Si no es decabellado pensar en esto, mi pregunta es, ¿que sistema escalable de versión podría emplear?
Mi nomeclatura se basa en reglas. No son muchas, ni rebuscadas (hasta el momento a mi todavía me suenan a sentido común), pero las hay tanto generales y comunes a todos los elementos, como específicas (por ejemplo, reglas que hacen a las variables, otras que hacen a las clases, otra para los componentes visuales, etc)
Un cambio en una regla específica implicará grandes cambios ya que afecta en un todo, mientras que una nueva regla para algún elemento no trae ni justifica un cambio de arrastre o efecto en cascada. Debiera ser algo menor.
Ando pensando en como hacerlo lo más simple posible, porque tampoco quisiera llegar al punto de tener que rizar más el rizo y tener un sistema de versión paralelo que termine siendo un tremeno sotobosque.
Tampoco es que todos los días cambio las reglas, pero cuando noto que alguna queda desfazada o que aparecen ambigüedades (un posible ejemplo reciente lo podríamos ver en este hilo de Agustín) siento que es hora de ajustar las cosas.
Estoy justo en un proceso de reingeniería que venía postergando... porque no estuve documentando (Niños eso no se hace... siempre documenten ) y bueno... me ha tocado volver a poner orden a la casa.
Estoy pensando en llevar mis reglas de forma que pueda identificarlas:
R-<Nro>-<Fecha>: regla general
R.<Nomeclador>-<Nro>-<Fecha>: regla específica para el nomeclador. Por ejemplo: R-VAR-1-03062015 hace la regla #1 de las variables dictada el día 03/06/2015 (formato: dd/mm/yyyy)
Y si tengo que hacer un cambio a una regla simplemente se hace una "sub-rama" identificada por la fecha, así que siguiendo el ejemplo anterior podría decir R-VAR-1-24112016 y por tanto la regla vigente es la fecha más reciente o la última derivación.
Hasta el momento las tenía todas siguiendo el orden... del #1 al #3 las específicas, de las #4 a la #7 para las variables, etc. Y pienso que con esta reforma se puede ser más fácil agregar cosas sin romper la numeración, y además hasta siento que podría definir las reglas (y otras nuevas) casi "al vuelo" en la medida en que uno avanza en su estilo de programación y aprende nuevas cosas.
¿Ustedes tienen algún criterio sobre esto?
Saludos,