Question

OK, alors j'ai été programmée dans Delphi pendant 3-4 ans et me considère comme un concepteur d'applications de niveau intermédiaire avec une bonne compréhension des concepts.Mais comment vais-je aller mieux?Je cherche juste la source d'un couple de composants que j'utilise assez souvent (VirtualTreeView, AsyncCalls) et le code de là me soulevent juste.Oui, je peux comprendre certaines parties, mais d'autres choses vont juste sur ma tête.

Alors, où sont les meilleures ressources pour améliorer ma programmation abililty?Livres, blogs ou autres sources d'informations?

Était-ce utile?

La solution

Les compétences de programmation sont comme des muscles;La meilleure façon de les améliorer est de les exercer.Si vous voulez apprendre à être un meilleur codeur, travaillez sur un projet plus difficile que vous avez déjà travaillé auparavant.Venez avec une idée de quelque chose que vous aimeriez écrire, mais ne savez pas vraiment comment faire et commencer à écrire.Une fois que vous avez rencontré des concepts que vous ne comprenez pas, recherchez-les, et vous finirez par ajouter de nouveaux concepts et compétences à votre répertoire.

Autres conseils

Comprendre le code qui utilise des concepts que vous n'êtes pas au courant est difficile. Mon conseil:

  • Choisissez un ou deux projets que vous ne comprenez pas et que vous les mettez à nouveau de nouveau . De votre question, essayez de rédiger votre propre composant arborescent (ou liste) et essayez d'écrire un cadre de filetage simple où vous pouvez expédier des travaux et récupérer leur travail à un certain point. Ce sont des versions simplifiées des deux projets que vous avez mentionnés.

    En tant que programmeur, vous apprendre en faisant . Aucune quantité de théorie ne compensera l'expérience d'avoir abordé et résolu un problème. [*]

    Lorsque vous abordez ces deux problèmes, vous rencontrerez certains des mêmes problèmes que les auteurs de arborescence virtuelleview et AsyncCalls a fait. (Si vous avez des problèmes, demandez ici!) Vous allez non seulement apprendre les mêmes choses qu'ils ont apprises, mais vous reviendrez probablement de lire leur code et de comprendre certaines des choses qu'ils font.

    Ne soyez pas tenté par le fait que vous avez des implémentations de fonctionnement des concepts autour (les projets originaux) et du code de copie - n'hésitez pas à le regarder pour inspiration, mais ne le copiez pas. Ecrivez-le vous-même.

    N'oubliez pas que Mike Lischke et Andreas Hausladen sont des personnes très intelligentes. Ne soyez pas découragé si c'est un travail difficile. De nombreux programmeurs vont tout au long de la carrière d'être compétent (comme cela vous semble) sans vous pousser à essayer ou à apprendre quelque chose de plus difficile (donc si cela ne vous dérange pas que je le dise, bon pour vous pour poser la question!)

    Quelques autres idées:

    • apprendre une autre langue . Delphi est génial, mais vous "pensez" dans une langue, et donc si vous apprenez une autre langue bien, vous serez exposé à d'autres concepts ou façons de penser, ou différentes façons de faire la même chose. Cela ouvre vraiment votre esprit.

      Par exemple, C ++ est idéal pour une utilisation de Raii , Modèle MetaProgramming (ceci est plus puissant que ce que les modèles de Delphi permettent des choses assez étonnantes dans les différentes bibliothèques supplémentaires telles que boost et vous tirer dans le pied :) Une langue fonctionnelle changera complètement comment vous Pensez (et je dois admettre d'être un peu hypocrite ici: je leur ai été exposé mais je ne le sais pas moi-même. Je veux.) Objectif C pourrait être bon pour une autre prise sur quels moyens d'orientation objet (IT et C ++ sont les deux langues en C orientées objet, mais jus ry différent.) Vous obtenez l'idée.

    • Pour examiner ces projets spécifiques: une réponse sur cette page a conseillé de passer à travers la ligne de ligne. Je trouve pour comprendre le code que je n'ai pas utilisé avant que cela puisse être écrasant. J'ai une fois lu sur un blog d'un membre du personnel d'Embarcadero quelques conseils à Utilisez un profileur , car il vous donnera une bonne vue de haut niveau de (a) toutes les classes / méthodes / parties d'un programme et ( b) Lesquels sont les plus couramment utilisés et probablement les plus essentiels, et comment tout cela se comporte ensemble. Je ne peux pas prendre de crédit pour cette suggestion, mais je pense que c'est un bon conseil. Je recommande d'utiliser AQTime .

      C'est pour cette raison que je trouve des réponses telles que "Trouver Foo, étudie la source" inutile: vous êtes un codeur, bien sûr, vous allez regarder le S

! comment regarder la source, c'est une question plus intéressante.
  • Enfin, si vous arrivez au point où vous avez été "en regardant la source d'un couple de [projets] et que le code y a fait des souches" ou si vous faites une partie de laci-dessus et ne comprenez pas quelque chose, demandez ici!

    [*] Note de bas de page: Je ne préconise pas pas Connaître la théorie sous-jacente, juste qu'il y a une connaissance / une confiance Vous obtenez en faisant quelque chose vous-même c'est essentiel.

  • Vous devez lire ces articles de Steve Trefethen :

    Je pense que vous grandiriez beaucoup dans vos capacités Delphes si vous:

    1. Apprenez à construire des composants. Lire Ray Konopka's Book sur des composants Delphi personnalisés ou son Article EDN.

    2. Étudiez les sources Jedi JVCL et JEDI JCL. Les bibliothèques de l'API Jedi et la JWSCL sont également utiles comme source d'informations. La documentation MSDN (Microsoft) est également inestimable, en tant que source de documentation de la plate-forme pour les différents sous-systèmes Windows, vous devrez interagir avec.

    3. Obtenez une copie du livret de Delphi Mastering Mastering Marco Cantu, ou du Guide du développeur Delphi de Texeira et Pacheco.

    4. En savoir plus sur le développement axé sur les tests, les tests d'unités, le contrôle de la version (apprendre plusieurs systèmes, comme Subversion, Git, Mercurial, etc.), une intégration continue et d'autres techniques de qualité professionnelle.

    Le meilleur moyen (pour moi) de comprendre comment les œuvres de code que je ne peux pas suivre de la recherche du code seul est de se mettre en panne et d'observer le code en question. Placez un certain nombre de points d'arrêt et commencez à suivre le code pendant qu'il est en marche.

    Plus vous le faites, plus votre capacité à suivre ultérieurement le code de Juste en regardant il s'améliore.

    En outre, vous ne l'avez pas encore fait, je suggérerais fortement une lecture du livre suivant:

    Modèles de conception: éléments de logiciel réutilisable orienté objet (ISBN 0-201-63361-2)

    Écrit en 1994, il est toujours aussi pertinent aujourd'hui qu'il était à l'époque (sinon plus).

    La chose importante à ce sujet est que cela vous apprend à reconnaître certains modèles de code et vous donne un vocabulaire pour décrire les sections de code entières avec un seul terme unique.

    Dans le modèle que vous construisez dans votre esprit sur ce que fait un morceau de code complexe et comment il interagit, vous ne devez plus garder toutes les minutes de détails, mais vous pouvez créer une abstraction de niveau supérieur dans votre esprit où vous décrivez. le code à vous-même comme l'interaction des blocs fonctionnels basés sur certains modèles de conception.

    Cela suppose naturellement que le code en question est bien conçu. Parfois, certains codes sont simplement un désordre totalement qui peut faire du spaghetti jaloux et une incapacité de votre part de la suivante et de la compréhension du code n'est pas un échec du tien, mais de la personne qui a écrit le code.

    Si vous souhaitez comprendre le code qui ne vous appartient pas, vous devez commencer et descendre et sale. Évitez les parties du code que vous souhaitez comprendre dans un programme «minimal» et déboguer à travers la ligne informatique par ligne. Le plus souvent, cela vous dira ce qui se passe aux niveaux bas. Parfois, cela seul vous donnera la compréhension dont vous avez besoin.

    Mais ensuite, lorsque vous êtes soulevé de la manière dont le code construit fonctionne, entrez des parties des lignes incriminées dans Google pour une réponse. Cela vous conduira souvent à bloguer des postes ou des articles qui discutent du code similaire qui expliquent les concepts et comment le code fonctionne.

    Parfois, je vais à recherche de code Google et sélectionnez la langue Pascal / Delphi à effectuer de la recherche. Je trouve que le code ici donne une perspective différente et a souvent des commentaires et d'autres informations qui contribuent à comprendre les idées.

    Si je ne peux pas comprendre les autres moyens, je viens à Stackoverflow, qui est une ressource fantastique pour les informations Delphes des programmeurs très compétents et expérimentés Delphi. Si c'est quelque chose que vous, comme un programmeur déjà intermédiaire ne peut pas comprendre, cela fera probablement une très bonne question ici, et vous obtiendrez d'excellentes réponses à court terme que je suis sûr d'aider votre compréhension et votre apprentissage. .

    La programmation est complexe.

    L'application RAD typique a des formulaires avec le code dans les gestionnaires d'événements, les données de données avec des requêtes et non une seule classe.

    Vous pouvez écrire des centaines d'applications comme ça et apprendre rien d'autre que comment utiliser divers composants et leurs propriétés et événements.

    C'est le problème principal avec Delphi, c'est facile et naturel de faire des choses dans le mauvais sens. Rad= mauvais. Malheureusement, 90% des applications sont probablement écrites comme celle-là.

    Alors qu'est-ce qui ne va pas avec cette approche? Il manque toute architecture. Pourquoi est-ce mauvais? Ce n'est pas un changement résistant. Lorsque vos exigences changent, vous devrez faire plus de changements que vous le feriez avec une application correctement conçue.

    Il est maintenant bien admis que les applications doivent être structurées en couches.

    La séparation typique des couches est

    • Objets / règles d'entreprise
    • Cartographie de données / persistance
    • GUI

      Avec une couche d'entreprise proprement séparée, vous pouvez avoir une interface graphique Win32, une interface graphique Web, un appareil mobile ...

      Avec une couche de persistance séparée proprement séparée, vous pouvez avoir les mêmes couches d'entreprise et d'interface graphique à maintes reprises de Say InterBase à la post-progressition.

      Il est également beaucoup plus facile d'écrire des tests.

      Permettez-moi de vous avertir maintenant, c'est une longue et dure chemin à prendre. Il faudra des années à maîtriser et vous ne serez jamais complètement fait.

      Lorsque vous faites votre application bien conçue et que vous avez ces couches configurées et que vous le faites travailler, et vous le montrerez avec enthousiasme à vos collègues, ils vous donneront un look étrange et disent: Eh bien, je viens de laisser tomber cette requête sur la forme, exécuter et il ressemble de la même chose. Mais vous saurez mieux.

      Je ne suis pas d'accord avec des suggestions pour apprendre une autre langue. C'est-à-dire que je ne fais que contourner le problème. La compétence pour organiser et structurer correctement votre application est la langue agnostique. Toute vraie langue oo est suffisante, donc pas besoin d'en apprendre une autre à ce stade.

      Je ne pense pas non plus regarder la source de VirtualTreeeview ou des contrôles similaires vous enseignera beaucoup. Vous apprendriez à propos de Winapi, mais tout en vous servant utile, cela ne va pas aider à la conception des applications.

      Pour résumer, Google Up Ressources sur la conception des applications, les objets d'affaires, l'architecture, les OPF, les modèles et les tests.

    Je ne suis pas sûr qu'il y ait une réponse simple à votre question.

    Un moyen de perfectionner constamment votre compréhension des fondamentaux est de la pratique et de la répétition.Un moyen intéressant d'accomplir cela est le soi-disant Code Kata , qui s'inspire des arts martiaux.

    Le concept lui-même est l'agnostique linguistique et l'accent est lourd sur le TDD, que j'aime. Julian Bucknall semble aussi être un fan.Certaines personnes même enregistrent leurs katas .Une recherche rapide Google transforme beaucoup de références différentes.

    Si vous travaillez dans le cadre d'une équipe, participez à l'examen du code de pair, en utilisant un outil tel que Code Collaborator ou Révision.Non seulement vous apprendrez des autres et de leurs commentaires sur votre code, mais vous développerez un œil critique de votre propre travail et commencera rapidement à coder mieux.

    Le code de virtualtreeeview est terrible. Ne t'inquiète pas pour ça.

    Pour être vraiment bon lors de la programmation orientée objet, vous voudrez peut-être essayer SmallTalk pendant un moment. Et pour quelque chose de complètement différent, ajoutez-le dans le Mer Cadre Web.

    [modifier] Il y a plusieurs raisons pour lesquelles la recherche de la mer est une bonne idée. Il s'agit d'un excellent exemple de création d'excellentes abstractions sur des atrocités telles que HTML, CSS et JavaScript, ce qui lui permet de faire du développement Web de manière raisonnable. Il montre comment créer des interfaces couramment et comment les utiliser pour être beaucoup plus productif.

    Après 20 ans de Turbo Pascal et Delphes, mon style de codage s'est considérablement amélioré avec l'utilisation de Smalltalk. Aurait dû l'avoir trouvé plus tôt.

    VirtualTreeView d'autre part consiste en une énorme quantité de code mal structuré. Aucune abstraction, des méthodes trop longues, des structures de données mauvaises. Le seul avantage est qu'il est largement utilisé, il est donc peu probable que vous rencontriez des bugs si vous gardez les pièces bien utilisées.

    [EDIT2] et après vous être à l'aise avec SmallTalk et Mer, essayez de l'exécuter sur Gemstone, une base de données orientée objet. Cela vous montrera comment les bases de données devraient être (invisibles) et vous faire argumenter contre des bases de données relationnelles toujours après.

    Licencié sous: CC-BY-SA avec attribution
    Non affilié à StackOverflow
    scroll top