~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/code-style.txt

  • Committer: Karl Bielefeldt
  • Date: 2010-09-29 19:57:28 UTC
  • mto: (5483.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5484.
  • Revision ID: 7mq3cbbd9q@snkmail.com-20100929195728-nvuqlepsrwcxbziw
Use meliae to dump memory to a file upon MemoryError.

Show diffs side-by-side

added added

removed removed

Lines of Context:
364
364
 
365
365
Because repr methods are often called when something has already gone
366
366
wrong, they should be written somewhat more defensively than most code.
367
 
They shouldn't have side effects like doing network or disk
368
 
IO.
369
367
The object may be half-initialized or in some other way in an illegal
370
368
state.  The repr method shouldn't raise an exception, or it may hide the
371
369
(probably more useful) underlying exception.
387
385
``Exception`` (which excludes system errors in Python2.5 and later) would
388
386
be better.
389
387
 
390
 
The ``__str__`` method on exceptions should be small and have no side
391
 
effects, following the rules given for `Object string representations`_.
392
 
In particular it should not do any network IO, or complicated
393
 
introspection of other objects.  All the state needed to present the
394
 
exception to the user should be gathered before the error is raised.
395
 
In other words, exceptions should basically be value objects.
396
 
 
397
388
 
398
389
Test coverage
399
390
=============
494
485
 
495
486
 * Don't say "open source" when you mean "free software".
496
487
 
497
 
 
498
 
Dynamic imports
499
 
===============
500
 
 
501
 
If you need to import a module (or attribute of a module) named in a
502
 
variable:
503
 
 
504
 
 * If importing a module, not an attribute, and the module is a top-level
505
 
   module (i.e. has no dots in the name), then it's ok to use the builtin
506
 
   ``__import__``, e.g. ``__import__(module_name)``.
507
 
 * In all other cases, prefer ``bzrlib.pyutils.get_named_object`` to the
508
 
   built-in ``__import__``.  ``__import__`` has some subtleties and
509
 
   unintuitive behaviours that make it hard to use correctly.
510
 
 
511
488
..
512
489
   vim: ft=rst tw=74 ai