[fr] Pattern NULL-Object

Mildred Ki'Lya ml.mildred593 at online.fr
Thu Oct 22 07:37:34 UTC 2009


Salut,

Je suis en cours :)
Et le prof vient de nous parler du pattern NULL-Object. Il en a parlé à
propos du refactoring, en parlant d'une mauvaise pratique qui consiste à
avoir des branches:

    (object = NULL).if {
        ...
    } else {
        ...
    };

La solution qui est identifiée à ce problème est d'utiliser un
NULL-Object au lieu de la référence NULL. Le comportement du NULL-Object
(le contenu des méthodes) serait donc la première branche du if. Il
s'agit ici de supprimer les tests object=NULL par de la liaison dynamique.

J'ai pensé donc qu'on pouvait implémenter le NULL en lib :)

Il faudrait par contre un minimum de possibilités d'introspection (les
slots fallbacks que j'ai présenté il y a deux ans) qui permettrait à
l'object NULL (en lib) de pouvoir implémenter n'importe quel slot. Et
pour avoir le comportement par défaut (qu'on a actuellement), l'objet
NULL (en lib) fera un print_stack et un die_with_code error_code.

Mais on peux très bien imaginer des objets qui ont besoin d'un
comportement différent en cas de NULL, et on aurait alors:

    Section Header
        + name := TRANSACTION;
        - default := TRANSACTION_NULL

Et on aurait un object TRANSACTION_NULL qui implémenterait ce
comportement NULL.


C'est encore une idée jeune, et peut être pas bien présentée (je suis en
cours) mais j'espère que vous avez l'idée.


Mildred

-- 
Mildred Ki'Lya
╭───────── mildred593@online.fr ──────────
│ Jabber, GoogleTalk: <mildred at jabber.fr>
│ Website: <http://ki.lya.online.fr>           GPG ID: 9A7D 2E2B
│ Fingerprint: 197C A7E6 645B 4299 6D37 684B 6F9D A8D6 9A7D 2E2B

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/lisaac-devel/attachments/20091022/98f530bd/attachment.pgp>


More information about the Lisaac-devel mailing list