2009-02-04 8 views
3

Donc, je suis devenu un développeur Rails raisonnablement compétent, et je constate que mon goulot d'étranglement est maintenant mon manque de compréhension des constructions Ruby plus complexes. J'essaie de construire des plugins, et en regardant quelques-uns complexes, leur sorcellerie OOP est grecque pour moi. (Je ne ai jamais eu beaucoup de formation formelle POO de sorte que fait partie du problème.)Quelle est la meilleure façon d'apprendre des constructions Ruby OOP plus avancées?

Je veux mieux comprendre:

  • méthodes d'envoi d'un endroit à un autre (inclure, étendre, etc ...)
  • Métaprogrammation & méthodes prépondérants (super)
  • d'héritage de classe, modules, etc

Serious Ruby semblent grimoires comme trop. Y a-t-il un moyen pragmatique d'apprendre ce genre de choses qui étendra mes pouvoirs sans me submerger dans les rouages ​​internes de la langue?

+0

Le sujet est intrinsèquement complexe. Il ne s'agit pas seulement de la POO, mais aussi de la nature des langages dynamiques et du modèle de métaprogrammation exceptionnellement flexible de Ruby en particulier. Si quoi que ce soit, les livres sous-estiment la complexité IMHO - je les ai lu et je ne comprends toujours pas! –

Répondre

1

Cette Peepcode plugin patterns pdf a effectivement répondu à toutes mes questions; ce que j'essayais de faire était d'écrire un plug-in donc c'était exactement l'information dont j'avais besoin.

3

La meilleure façon est de l'utiliser et apprendre en regardant le code des autres.

Je ne pense pas qu'il y ait un meilleur endroit pour commencer que the official documentation page.

Désolé si je vous ai déçu, mais il n'y a pas facile façon d'apprendre toutes ces constructions.

2

J'ai trouvé le ruby quiz d'être une ressource formidable pour aiguiser vos connaissances de rubis. Vous pouvez acheter la version livre ou simplement utiliser les entrées sur le site. Différents problèmes se prêteront à l'utilisation de différentes parties de la langue.

0

Vous pouvez également essayer et apprendre les bases d'une autre langue (Java ou C# par exemple). Je pense que l'apprentissage d'un nouveau langage peut être une manière très efficace et amusante de vous familiariser avec différentes approches de résolution de problèmes (dans votre cas, des concepts de programmation orientés objet).

Une fois que vous savez comment le code, apprendre les bases d'une nouvelle langue est à la fois relativement facile et extrêmement divertissant, si vous avez tendance à faire des progrès extrêmement rapides au début

Et quand vous essayez de saisir des concepts qui sont nouveaux pour vous, il pourrait être plus facile de les comprendre dans un cadre qui est également nouveau. De cette façon, vous pouvez vous concentrer sur les concepts que vous essayez d'apprendre, et non sur la façon de résoudre ce problème différemment dans votre langue, etc ...

1

la meilleure façon de commencer est de comprendre comment les hiérarchies de classe fonctionnent vraiment en interne, donc vous savez ce qui se appelle quand. en d'autres termes, vous devez comprendre les métaclasses.

ici sont les deux ressources qui m'a aidé le plus à comprendre le concept: why´s explenation et another one

vous pouvez également essayer ces ruby plus screencasts.il y a beaucoup d'autres sujets que vous semblez être intéressé à

2

J'ai trouvé these screencasts par Dave Thomas pour être grand pour cela, d'ailleurs, il a pragmatique dans le titre afin que vous ne pouvez pas manquer: D

+0

Oui! Je suis tombé sur ceux-ci hier et il semblait que le plus proche que je l'ai eu. Va certainement passer par eux. Est-ce qu'ils couvrent des choses comme envoyer des méthodes à d'autres classes/contrôleurs? Je ne suis pas sûr de ce qui est inclus dans la métaprogrammation. –

+0

Je ne comprends pas ce que vous entendez par "envoyer des méthodes à d'autres classes/contrôleurs", mais si vous voulez dire comment utiliser extend et include, la réponse est oui. –

Questions connexes