2009-11-04 4 views
1

Je n'ai pas de bon nom pour ce style de programmation où la syntaxe est plus succinct pour ne pas avoir à passer le contexte dans une fonction ou appeler les fonctions d'un objet contexte.Quel style de programmation est-ce appelé?

Par exemple, un code C OpenGL au hasard:

glBegin(GL_QUADS); 
glNormal3fv(&n[i][0]); 
glVertex3fv(&v[faces[i][0]][0]); 
glVertex3fv(&v[faces[i][1]][0]); 
glVertex3fv(&v[faces[i][2]][0]); 
glVertex3fv(&v[faces[i][3]][0]); 
glEnd(); 

Mais vous pouvez définir le contexte dans l'appel « begin » et libérer dans l'appel « fin ». J'ai vu des styles comme ça en C#, Java et Ruby. A-t-il un nom?

+0

La raison pour laquelle je demande - est quand je pense à la construction DSLs internes - la fonctionnalité de ne pas mentionner le contexte est très pratique à plusieurs reprises. – BuddyJoe

+0

VB.NET a l'instruction With. Ruby a quelques techniques pour minimiser la spécification du contexte encore et encore. Je pensais juste que ça pourrait avoir un nom. – BuddyJoe

+0

Je réalise que le code C n'est pas le meilleur à démontrer. La syntaxe Ruby on Rails - Active Record migrations pour create_table a cette nature. Ne spécifie le contexte qu'une seule fois. http://ruby.about.com/od/rubyonrails/a/migrations.htm – BuddyJoe

Répondre

1

Programmation orientée de référence?

+0

Est-ce un vrai nom? Je l'aime bien. peut-être une référence implicite ou un contexte implicite. +1 – BuddyJoe

+0

Je viens juste de le composer –

1

Si vous assumez il y a un « ce » devant les déclarations que vous avez pu considérer une interface Fluent: http://en.wikipedia.org/wiki/Fluent_interface

Sinon, il apparaît un peu comme une langue orientée Stack tels que PostScript:

http://en.wikipedia.org/wiki/Stack-oriented_programming_language

+0

Pas vraiment, une interface fluide consiste à pouvoir continuer directement l'opération en invoquant une méthode du résultat de la méthode précédente. Cet extrait de code fait quelque chose de complètement différent. – Dykam

+0

Oui, lorsque vous supposez qu'il y a un "ceci" devant ces appels. –

+0

@Nissan Alors ça ressemble à un mauvais Java :-) –

1

Il semble très similaire à un Builder

6

« procédure avec-stat globale e effets secondaires "?

(Bien que OGL n'utilise une pile pour maintenir divers état, il n'est pas utilisé dans cet exemple et donc de ma réponse omis.)

+0

J'aime bien où vous allez ce +1. Est-ce que cela fait partie des trucs de popMatrix/pushMatrix dans OpenGL? Que penses-tu de mon commentaire Ruby au niveau de la question? Il utilise une fermeture. – BuddyJoe

1

Cela ressemble sorta comme un constructeur. Ce que vous avez ici, ce sont les appels openGL et vous construisez un triangle (rendu). Votre exemple réécrite dans oo/termes constructeur:

 
TriangleBuilder b = new TriangleBuilder(); 
b.AddVertex(normal, faces[0]); 
b.AddVertex(normal, faces[1]); 
b.AddVertex(normal, faces[2]); 
Triangle t = b.Build(); 
+0

+1. Je vois de quoi tu parles ... c'est comme un Builder mais cache le "b" (ou le contexte actuel).Ce modèle pourrait être utilisé pour d'autres choses que la construction de choses ... donc je ne suis pas sûr que Builder transmettrait toujours la bonne idée. – BuddyJoe

+0

@ B. Tyndall: Je suis d'accord, c'est pourquoi j'ai écrit "Cela ressemble à genre ..." au lieu de "C'est ..." –

Questions connexes