tags:

views:

265

answers:

5

I have never understood what is the ideal way to name a project, package, class. I do it in a random way which doesn't look professional at all. I know the class name should start with a capital alphabet. But what I don't really have trouble with is finding the names that are suitable and look professional. lets consider this example. If I am writing a program for fibonacci series i give names like this:

project name = fibonacci_project
package name = org.fib.code1
class name = Code1

Doesn't look neat right? How would you do it ?

+4  A: 

For starters, it's Fibonacci.

See Sun's java naming conventions for some details on package / class names.

Aside from that, the general rule of thumb is - all your names should be descriptive:

  • for class - what does it do (or what does it represent)
  • for package - what common functionality (goal) do all classes within that package provide (aim to achieve)
ChssPly76
+1 Use Sun's naming conventions, they are the de-facto standard that almost everybody seems to use for Java.
Jesper
+1 - in addition to being the defacto standard, the Sun rules also help to avoid different groups from accidentally using the same FQNs for different classes.
Stephen C
+1  A: 

Your project name could be "fibonacci solver".
Your package could start by "com.silverkid.fibsolver"
Your main class would be "FibonacciSolver.java"

cherouvim
+3  A: 

There are some tips about naming:

  1. As you said classname have the capitalization of first letter of every word, eg. LongClassName
  2. Sun always preferred long names that explain clearly the meaning of the class (think about DefaultTableModel). Code1 is definetely not right, maybe FibonacciCalc or something that contains Fibonacci would fit better.
  3. Preprend Abstract if it's an abstract class
  4. Append Impl if it's an implementation of a particular interface
  5. Package names should start with org, com, it, etc (usually it was the backward URL of project repository or the nick of the coder)
  6. You should split your packages according to functionality, your example is really simple so there is not a way to do it.

Think about something more complex in which you have:

org.package.gui
org.package.core
org.package.extensions
Jack
4 is only appropriate in limited cases. Typically where there is only one interface and typically only one implementation. If there are multiple implementations, the name should represent that specific implementation, not the interface.
Robin
That's true, forgot to specify it. I'll humbly vote +1 on your comment :)
Jack
A: 

Examples:

Project name - FibonacciSeriesProducer
Package name - com.lazywithclass.utils, com.lazywithclass.entryPoint
Class name - FibonacciLogic.java, FibonacciPrinter.java

This is how I would have done it, maybe during development this will change a bit, the really important convention is naming convention for class names, see if this steps are of some help:

  1. identifiy objects that you will need to solve the problem
  2. Knowing what one class' purpose will be name it accordingly
  3. Keep an eye on your class names, mantain them meaningful through the development

See here for some examples.

Alberto Zaccagni
A: 

I like the eclipse project naming scheme, where a project name is simply the name of the core package that the project provides, e.g. Project name: org.eclipse.emf.core or org.eclipse.emf.common

zedoo