Stack Overflow GitHub RSS Feed

Standards: Project Naming

Published: May 01, 2016

PROJECT NAMING

Peineary Development would like to have a standard way of naming our projects to ease development and find-ability across our systems. Systems currently include things like source control, build and deployment systems as well as the databases we utilize.

HOW TO NAME A PROJECT

There are only a few questions that one needs to ask themselves when naming a project. While this might sound a bit silly, it is usually best to answer these questions with the help of at least one other person. This should preferably be someone not very familiar with the concept that the new project is meant to contain, encouraging the usage of terms that easily make sense to a broader audience. What business entity is this being developed for? Examples: PeinearyDevelopment, ThirdPartyContractingVendor

What is the broad purpose that this is being developed for? Examples: Framework, User Interface, Applications, BusinessComponents

Is there a more specific, but still broad umbrella concept in which the code under development can fall? Examples: Addresses could be on its own, but is a concept that is tied directly to the broader concept of Locations

Is it possible that this same development concept will be exposed inside a given network as well as outside of the DMZ? For example, is there a need for two applications that deal with Addresses, one that will be exposed externally (DMZ) to external customers and one that will be exposed internally on our network to our staff that will provide more sensitive information that will allow them to help in the processing issues?

What is the specific concept you are developing this project for? Examples: Logging, Addresses, Individuals, BlogPosts

EXAMPLES UTILIZING THE NAMING PROCESS

A developer is assigned the task of creating a library for standardizing and unifying the way we log events in our applications.

A developer is assigned the task of creating a library that will encapsulate the concept of Addresses.

Other possible examples:

IMPACTED AREAS

GitHub

The Project should contain the first two pieces from the namespace. The Repository name should be the remaining pieces of the namespace.

TeamCity

The Project should contain the first two pieces from the namespace. The Plan name should be the remaining pieces of the namespace.

Database

The sql database should be created at the ‘broad umbrella concept’ level. (e.g. Locations) The sql tables should be named as follows: Schema should be the ‘specific concept’ Tables should be the logical objects under that schema. Example: [Locations].[dbo].[Addresses] (See Sql Naming Standards & Conventions document for more information)

Infrastructure

Anything namespaced as ‘Internal’ should only reside on one of the internal web servers. If it is a business component, it should reside on the internal web services set of servers. If it is an application it should reside on the internal web servers set of servers. Nuget packages should start with the above namespace and then should end with the more specific project name given to that specific piece in the solution.