FeaturesPluginsDocs & SupportCommunityPartners

Arrêter de Coder

Cet article fait partie de la série d'articles soumis par la communauté NetBeans dans le cadre du concours "Win With NetBeans".

Une intruduction à la création de code source plus rapide en codant moins avec NetBeans 4.0

Préface

Saviez-vous que les touches sur un clavier standards sont délibérément disposées de façon à ralentire votre frappe ? C'est le cas. Cette disposition, appelée QWERTY, fut choisit à l'origine pour la première machine à écrire en 1872 parce qu'il empechait les personnes de frapper rapidement ce qui aurait provoquer la collision des barres de frappe

C'est une des raisons pour laquelle vous devriez arrêter de coder, ou plutôt, pour laquelle vous devriez laisser NetBeans créer le code pour vous. Cet article contient une série d'astuce sur comment écrire du code source plus rapidement avec NetBeans 4.0 en utilisant le moins de frappe clavier que possible.

Conseils

1er Conseil: Utilisez le Word Matching

Une fois que vous avez tapé un mot dans un fichie source, vous pouvez retaper ce mot n'importe où en introduisant les premières lettres en pressant ensuite Ctrl-K. Cette fonctionnalité est appelée Word matching et cela fonctionne en recherchant après les mots qui commencent par les lettres que vous avez tapés. Ctrl-K regarde en arrière tandis que Ctr-L regarde en avant.

Une fois que vous avez tappé le boulve for montrée ci-dessous

            for(Person person : personSet) {

            }
        

qui va itérer un ensemble de personnes, vous placez votre curseur entre les accolades et tapez "pe" pour ensuite presser Ctrl-K. NetBeans va immédiatement suggérer le mot "personSet" car c'est le mot le plus proche qui commence par "pe", et pressez Ctrl-K une seconde fois fera que Neteans va suggérer "person" qui est le deuxième mot le plus près.

En fait, dans ce cas spécial, vous ne deviez même pas taper "pe" – en pressant directement Ctrl-K dans la bouclen vous auriez directement obtenu les identifiants "personSet" et "person"; Cela fonctionne parce que ces deux identifiants sont les premiers mots rencontrés lorsque NetBeans rechercher vers le haut dans le fichier source. Cependant, si vous aviez écrit 10 mots entre le début de la boucle et le curseur, en pressant uniquement Ctrl-K, NetBeans vous aurait proposer tous ces dix mots avant de finallement vous suggérer "personSet" et ensuite "person". Dans ce cas, introduire "pe" avant de pressez Ctrl-K aide à ce que NetBeans ignore tous les mots qui ne commencent pas par "pe".

Vous avez pressez Ctrl-K trop de fois et avez maintenant attein un mot qui est placé avant celui que vous désirez, il vous suffit de pressez Ctrl-L quelques fois et NetBeans se repositionnera sur le mot que vous avez manqué. Finallement, veuillez noter que cette fonctionnalité fonctionne n'importe où dans tous les types de fichiers - en fait, c'est très pratique dans les fichiers XML où vous pouvez l'utiliser pour tapez les noms des tags déjà présents dans le fichier.

2ième conseil: Créer une Macro d'Identifiant

Ecrire de long nom d'identifiant rend le code plus lisible. Se souvenir qu'un identifiant appelé "i" identifie en fait une instance de type "Invoice" et non un "Iterator" ou un "ItemListener" peut être difficile, surtout dans le longues méthodes; Un nom comme "invoice" aurait été un meilleur choix. Maintenant, si seulement nous pouvons faire que NetBeans écrive "invoice" pour nous, il n'y aurait plus aucune raison de choisir "i". Cette partie vous présente un macro qui fait justement cela.

Imaginez que le curseur soit placé juste après "Invoice" (denoté par un "|") dans le code ci-dessous:

            public class Order {
            public void setInvoice(Invoice |) {

            }
            }
        

Lorsqu'on lance la macro, NetBeans va automatiquement introduire "invoice" en utilisant le nom du type "Invoice" déjà présent dans votre code. La macro retape simplement le mot précédent et change la première lettre du mot retapé en minuscule. Maintenant, une fois que vous avez fait que Netbeans tape la première occurence du mot "invoice" souvenez-vous que vous pouvez utiliser la fonctionnalité word matching (Alt+K) expliqué dans le "1er Conseil" pour retaper l'identifiant.

La création de la macro est faites en suivant ces 5 étapes:

  1. Sélectionnez le menu "Tools > Options"
  2. Étendez "Editing" et "Editor Settings"
  3. Sélectionnez "Java Editor"
  4. Regardez à la mi-hauteur de la fenêtre pour la propriété appelée "Macros" et cliquez sur le bouton "..." à l'extrême droite.
  5. Ajoutez une nouvelle macro nommée "Type identifier name using previous word" contenant le code macro suivant (copier simplement d'ici):
                        selection-previous-word copy-to-clipboard
                        caret-next-word " " paste-from-clipboard caret-previous-word
                        selection-forward to-lower-case caret-next-word
                    

Finallement, cliquez sur le bouton OK de la fenêtre "Macros" pour la fermer mais gardez la fenêtre "Options" ouverte - Vous en avez besoin pour créer un raccourci clavier pour votre nouvelle macro:

  1. Ouvrez la fenêtre "Key Bindings" en cliquant sur le bouton "..." de la propriété nommée "Key Bindings"
  2. Cliquez sur "Sort by Name" et sélectionnez votre nouvelle macro qui apparaîtra sour le nom "macro-Type identifier name using previous word"
  3. Ajoutez le raccourcis "Alt+N" en cliquant sur le bouton "Add".

Lorsque vous créez des macros, vous devriez normallement utiliser la fonctionnalité d'enregistrement de macro, qui vous permet d'enregitrer les frappes clavier et de les enregistrer sous une macro. Cependant, la macro montrée ici contient l'action "to-lower-case" et cette action n'est pas encore représentée par une gestuelle de souris ou clavier. Il vous faut donc rajouter cette action manuellement.

3ième conseil: Créer une Macro d'Assignation

Ceci est l'une de mes macros favorites! Habituellement, lorsque vous définissez un constructeur, vous avez besoin d'assigner la valeur des paramètres du constructeur aux variables de classes, comme dans cet exemple:

            public Person(String name, String emailAddress) {
            this.name = name;
            this.emailAddress = emailAddress;
            }
        

Si vous définissez la macro suivante et l'associez à Alt-=, au lieu de tapez "this.emailAddress = emailAddress;" vous pouvez simplement taper "this.e" suivi de Ctrl+K pour obtenir "this.emailAddress" suivi de Alt+= qui tapera le reste.

voir le "2ième conseil" pour les instructions sur comment créer la macro. Voici le code de la macro:

            selection-previous-word copy-to-clipboard caret-next-word " = " paste-from-clipboard ";"
        

Une fois que vous aurez eu l'habitude d'utiliser la macro Alt+=, vous verrez qu'il n'y a pas de moyens plus rapide.

4ième conseil: Utiliser les Abbréviations

NetBeans possède une longue liste d'abbréviatios pour introduire des mots bien connus, ou même du code multi-lignes. Vous pouvez essaier cela en tapant "sout" suivi de la barre d'espacement - cela fera que NetBeans tapera l'instruction complete pour vous. C'est à dire:

            System.out.println("|");
        

NetBeans ne tape pas de caractère "|" comme indiqué, mais placera votre curseur à cet endroit après que l'abbréviation soit remplacée.

Les abbréviations pré-définies sont vraiment source de gain de temps. Mais vous pouvez en retirez plus en définissant vos propres abbréviations.

Une bonne façon de commencer est d'examiner vos sources existants et de localiser les constructions de code que vous utilisez fréquemment. Un exemple typique d'une construction fréquement utilisée pourrait être la construction if/throw trouvée dans cette méthode:

            public void remove(int lower, int upper) {
            if(lower < 0)
            throw new IllegalArgumentException(
            "Parameter \"lower\" has to be a " +
            "non-negative number."
            );
            }
        

Cette méthode commence avec un instruction de guarde qui s'assure que le premier paramètre est un argument légale. Si ce n'est pas le cas, une IllegalArgumentException est jetée.

Parce que placer de telle instruction de garde est une bonne pratique courante, vous pouvez en profiter pour ajouter une abbréviation que NetBeans étendra en construction if/throw. Cela peut être fait comme ceci:

  1. Sélectionnez le menu "Tools > Options"
  2. Etendez les noeuds "Editing", "Editor Settings", et "Java Editor"
  3. Cliquez sur le bouton "..." de la ligne contenant la propriété"Abbreviations"
  4. Ajouter une abbréviation appelée "ill" qui devriendra
                        if(|)
                        throw new IllegalArgumentException("");
                    

Notez que NetBeans comprend l'utilisation du caractère "|" pour indiquer où le curseur devrait être placé après l'extension.

Maintenant, essayez de tapez "ill" et pressez la barre d'espacement - et voilà!

Bien sûr, vous aurriez pu créer une macro qui tape exactement la même chose, mais un avantage important des abbréviations est le fait qu'elles sont facile à retenir puisque vous pouvez leur donner des noms mémotechniques comme "ill" ou même "illarg" au lieu d'une combinaison de touches cryptées comme "Ctrl+Alt+I". Le désavantage des abbréviations est qu'elles ne peuvent lancer une macro - du moins, pas encore...

5ième conseil: Utilisez les Modèles de Source

La fonctionnalité, très facile à utiliser, de NetBeans est completement ignorées par la plupart des développeurs. Si vous avez besoin de créer de nombreuses sources qui ont plusieurs aspects en commun, vous devriez définir un modèle contenant ces aspects communs.

Par exemple, dans la plupart des systèmes, vous avez des règles pour comment une classe d'exception devrait être définie ou des règles qui disent que toutes les classes étendant la classe X devrait contenir certaines méthodes, variables, documentation, ...

Lorsqu'on commence à écrire une nouvelle classe, ce que la plupart des développeurs font, c'est de commencer depuis le modèle de classe vide "Java Class" et de tout écrire à la main. Cela implique souvent devoir réencoder ce qui a déjà été écrit auparavant. Au lieu de cela, vous devriez trouver une classe qui est un bon point de départ. Cliquez-droit sur son arborescence et sélectionnez "Save As Template...". Maintenant, lorsque vous avez besoin de créer une classe similaire, vous devez juste cliquez-droit sur le paquetage dans lequel la classe devrait être placée, sélectionnez "New > File/Folder..." et sélectionnez le modèle.

Définir un modèle d'un source existant peut en fait vous donner plus de contenu que nécessaire. Mais une fois le modèle défini, vous pouvez le personaliser pour supprimer tout le code qui n'est pas nécessaire en sélectionnant le menu "Tools > Options" et en localisant le modèle sous "Source Creation and Managent". Vous cliquez-droit sur son noeud et sélectionner "Edit", modifier le fichier, et l'enregistrer.

Si vous fournissez une API à vos collègues dans lequel ils ont besoin d' implémenter le même interface assez souvent, vous pouvez les aider en fournissant un modèle de source avec votre API. Partagez un modèle est aussi simple que le copier d'une machine à l'autre. Les modèles sont stockés dans le répertoire

"... [user home dir]\.netbeans\4.0\config\Templates\[your template folder]"

Si vous utilisez un outil de versionning, je vous recommande de créer un ensemble de modèles de projet et de les partager via votre système de versionning.

6ième astuce: Éditer les Getters et Setters efficacement

Si vous écrivez les Java beans à la main, un temps énorme sera gaspillé pour écrire et maintenir les méthodes triviales getter et setter. Fort heureusement, NetBeans peut générer ces méthodes pour vous, et l'EDI a même un mécanisme intégré pour les maintenir efficacement. Depuis NetBeans 4.0, le mécanisme de refactoring supporte la génération de méthodes get et set depuis les variables d'une classe. Pour créer les méthodes getName et setName montrées ici

            public class Customer {
            private String name;

            public String getName() {
            return name;
            }

            public void setName(String name) {
            this.name = name;
            } 
            }
        

tout ce que vous devez faire est de déclarer la propriété, cliquez-droit dessus et sélectionnez "Refactor... > Encapsulate Fields...".

Une fois que les méthodes ont été générées, vous aimeriez changer le nom de la propriété "name". Cela pourrait impliquer pas mal de travail vu que le mot "name" ou "Name" est maintenant éparpillé partout dans votre source. Heureusement, NetBeans a une fonctionnalité très réussie appelée "Bean Patterns" qui résout ce probleme. Si vous localisez votre classe dans la fenêtre Projects et étendez son noeud, NetBeans affiche un noeud appelé"Bean Patterns" qui contient un sous-noeud pour chaque propriété de bean de la classe. Ce noeud peut être renommé en pressant soit F2, ou en cliquant droit et en selectionnant "Rename...". Et si vous renommez votre propriété de cette façon, NetBeans fera toutes les modifications nécessaires pour vous.

La fonctionnalité de"Bean Patterns" vous permet également de modifer le type de propriété efficacement. Si vous cliquez droit sur le noeud de la propriété et sélectionnez l'options "Properties", cela ouvre une fenêtre contenant les informations concernant la propriété. Vous pouvez alors y modifier le type et NetBeans modifiera votre code source en conséquence.

7ième conseil: Utilisez l'Outil "Fix Imports"

En résumé: Vous ne devriez jamais écrire d'instruction d'import. NetBeans 4.0 a introduit une fonctionnalité vraiment brillante appelée "Fix Imports" accessible depuis le raccourcis clavier Maj-Alt-F. Cette fonctionnalités analyse votre code source et regarde les noms de classes qui ne sont pas encore importés. Si une classe X n'a pas été encore importée et seulement une classe dans tout votre projet est appelée X, NetBeans l'importera automatiquement. Si deux classes dans deux paquetages différents sont nommées X, NetBeans va montrer une boîte de dialogue demandant quelle classe vous préférez importer. "Fix Imports" travaille extrêmement bien, et il supprime automatiquement les imports qui ne sont plus nécessaires.

Conclusion

En utilisant ces conseils, vous remarquerez bientôt que vous produisez du meilleur code avec moins d'erreurs syntaxique en moins de temps. Aussi, si vous êtes parmis les nombreux développeurs qui avez des doigts courbaturés suite à du codage intensif, le fait que NetBeans écrive du code à votre place est vraiment la piste à suivre

Au plus vous personnalisez l'EDI pour répondre aux besoins spécifiques de votre projet, au plus vite vous pouvez implémenter votre système. NetBeans 4.0 est comme la voiture de course parfaite - rapide et super à conduire. Mais tout comme une voiture de course, le tuning est essentiel. Personalisez votre EDI en rajoutant des abbréviations, des macros, des modèles pour répondre à vos besoins et débrider la vraie puissance de NetBeans 4.0!

A propos de l'auteur

.... (Photo) est le fondateur de la compagnie de logiciel danoise ROCK IT, et le maitre pensant derrière le système de gestion de contenu orienté composant, entièrement java Puls, qui est développé entièrement avec NetBeans (à sortir au printemps 2005).

Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by