2010-10-15 3 views
5

Je regarde cette leçon (http://www.youtube.com/watch?v=aAb7hSCtvGw&hl=nl) et à environ 34 minutes, un point de balle sur une diapositive est mentionné en indiquant «espace d'état du document très soigneusement».Qu'est-ce qu'un espace d'état?

Qu'est-ce qu'un espace d'état? Pourquoi devrais-je le documenter "très attentivement"? Malheureusement, je n'ai aucun son sur la machine que je suis en train de poster, mais les diapositives elles-mêmes sont extrêmement utiles à mon apprentissage (ce serait encore plus utile avec le son).

Merci

Répondre

4

Un espace d'état est l'ensemble des états possibles, dans ce cas, d'un objet. Dans l'audio, il dit essentiellement que vous devez documenter quelles opérations sont autorisées dans quels états, et si une opération change l'état de l'objet (ce qui changerait l'ensemble des opérations autorisées). Il mentionne ceci est particulièrement important pour les objets mutables. Il utilise la date et le calendrier de Java comme des exemples d'API où c'est un problème, mais ne va pas dans les détails.

Pour donner un exemple concret (mais simplifié), considérez une connexion TCP. Cela aurait essentiellement deux états, ouvert ou fermé. Quand il est fermé, vous ne pouvez pas envoyer ou recevoir quoi que ce soit à travers lui, donc les appels à ces méthodes ne sont pas autorisés.

+0

+1 pour la bonne réponse. Un grand "espace d'état" me fait mal à la tête. C'est pourquoi je préfère des objets plus immuables et des designs plus simples. –

1

Paraphrasant ce que dit le locuteur, si l'objet est modifiable, vous devez documenter l'espace d'état. Il fait ensuite référence à l'API Date et Calendar de Java qui est mal documentée dans ce sens.

Je suppose que ce qu'il veut dire, c'est que vous devez documenter toutes les fonctions qui pourraient modifier l'état du code. Aussi quand c'est un bon (ou mauvais) temps d'appeler ces fonctions. Exemple, appelant une fonction read() après que l'objet est closed().