I prefer:

`var foo = new module.Foo()`

although I prefer to use CoffeeScript's object destructuring assignment:

```
{Foo} = require 'module'
foo = new Foo
```

or
 
```
moduleA = require 'module-a'
foo = new moduleA.Foo
```

1. Using the `new` keyword clearly indicates the creation of an object and 
I always use it for object creation.

2. In large projects namespaces are good! Aliasing every imported module as 
require forces you to do is bad in a dynamic language for maintainability.

If I search my code-base for `Foo` or `moduleA.Foo`, I am guaranteed to 
find all usages of `Foo`.

Refactoring dynamic language codebase is always painful, and making code 
maintainable should always be a very high priority in these decisions 
(balanced with "what would be the most fun" of course!)

When you allow someone to name imported modules and module properties 
without a strict convention you will have big problems down the track. This 
is generally not a problem with libraries, mostly with applications.

On Thursday, 11 July 2013 08:39:04 UTC+10, Andy W. wrote:
>
> I have seen a wide variety in different style for creating custom Node 
> modules. What style do you prefer or are there any best practices? I'm 
> fairly new to the Node community.
>
> var module = require('module');
>
> // A
> var foo = new module.Foo();
>
> // B
> var foo = module.foo();
>
> // C
> var foo = module.createFoo();
>
> // D
> var foo = Module.Foo.create();
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to