Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins
Illustration par six profils de développeurs

Le , par Victor Vincent

22PARTAGES

19  0 
Pour les professionnels du domaine du développement logiciel, écrire du bon code nécessite de respecter certaines règles, certaines conventions, certaines bonnes pratiques. Un code qui est mal documenté voire pas du tout, un code qui n'est pas modulaire est souvent considéré par le commun des programmeurs comme étant du mauvais code. Cependant, dans bien des situations, ces critères se voient être relégués au second plan. Aussi, voici six profils de développeurs qui ont écrit des codes pour gérer une suite de Fibonacci.

Développeur 1 : L'étudiant débutant

Le premier de la liste est le débutant en programmation, pour le meilleur code qui puisse être est un code récursif. Il applique ce que le prof lui a appris en classe. Son code n'est pas destiné à d'autres programmeurs et peut être lui même ne va jamais le réutiliser. Il ne se fatigue donc pas à commenter son code ou à produire de la doc.


Développeur 2: Le programmeur au Hackaton

Pour lui l'objectif c'est de réussir à faire une bonne démo. Il se contente d'une simple structure conditionnelle pour s'assurer que son code prend en compte tout ce qui était prévu dans le cadre de sa démo; de toute façon ce n'est pas le code qui intéresse le public ou le jury mais plutôt le résultat qui s'affiche à l'écran.


Développeur 3: le programmeur dans une startup

Le troisième type de développeur quant à lui est indécis dans son code, il hésite encore quant au fichier devant contenir code. La plus grande partie de son code est à écrire, un jour peut être, si l'entreprise fait long feu. Il a autant de TODO dans son code que de nouvelles idées qui lui passent par la tête. Il ne va pas se fatiguer à les implémenter avant d'obtenir le premier financement de qui voudrait bien croire et financer son projet.


Développeur 4: le programmeur dans une grande compagnie

Le quatrième est un parano du code bien documenté et tout aussi customisé. Il prend le soin de décrire la moindre variable utilisée dans le code et surtout veille à utiliser ses propres types redéfinis pour plus de sécurité. Il s'assure ainsi que personne ne pourra réutiliser son code ailleurs que dans sa boite mais aussi et surtout il montre à son chef qu'il est un bon petit disciple qui respecte toutes les règles.


Développeur 5: le programmeur Docteur en Maths

L'avant dernier de la liste lui, est un pro des fonctions, son code doit être le plus modulaire possible. Il veut que son code reflète toutes les étapes de son raisonnement quant il résolvait le problème dans son brouillon. Il écrit donc des fonctions pour chaque partie ou sous partie, pour la lisibilité, c'est déjà ça.


Développeur 6: Tom le chat

Il se moque de la suite de Fibonacci et de tous les problèmes qui peuvent préoccuper les autres programmeurs. Il se contente lui de faire en sorte de garder ses chatons ensemble. Il ne connait qu'un seul commentaire quel que soit la portion de code qu'il veut commenter, et pourtant il n'est pas le pire programmeur de la liste.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                    public static final int UNIT = 1 ;
                        public static final int UNITED = 2 ;
                        //meowwwwwwww meow
                        public int meow(int KITTENS_OF_THE_WORLD) {
                            //MEOW
                            if (KITTENS_OF_THE_WORLD < UNITED) {
                                return KITTENS_OF_THE_WORLD ;
                            } else {
                                 //meowwwwwwww
                                 //meowwwwwwwwwwwwwwwww
                                 return meow(KITTENS_OF_THE_WORLD - UNIT)
                                    + meow(KITTENS_OF_THE_WORLD - UNITED)  ;
                            }
                        }    

Source : Imgur

Et vous ?

Selon vous, quel est le meilleur code présenté par ces 6 profils de développeurs ?

Pensez-vous qu'un code se doit avant tout de répondre à un besoin ?

Voir aussi

Forum Humour Informatique

la Rubrique Humour

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de 4sStylZ
Membre éclairé https://www.developpez.com
Le 06/10/2015 à 11:47
Je suis le developpeur qui vas google «Best php fibonnaci algorythm» et qui vas la commenter, l'indenter, et la couvrir de quelques tests.
7  0 
Avatar de ChristianRoberge
Membre habitué https://www.developpez.com
Le 17/10/2015 à 6:19
Il y a un type de programmeur qui a été oublier. Je l'appelle l'illusionniste. À première vue son code semble bien documenté et semble suivre les "règles" de l'art. Mais quand on prend le temps de bien analyser ce qui est fait réellement, on s'aperçoit que la documentation est insipide et ne fait que décrire des banalité, que son code n'utilise pas les algorithmes approprié pour résoudre adéquatement les problèmes et le plus grave, toutes les endroits critiques qui exigeaient un commentaire sont carrément absent pour que personne autre l'auteur puisse comprendre le problème.
Cela semble irréel, mais cette personne que j'ai connu, a travaillé 3 ans dans la même compagnie que moi et il a eu les félicitations de la part de la direction pour son respect des directives et la quantité de code produit durant pratiquement toutes ses années. Fort de cette notoriété, il s'est trouvé un très bon poste dans une autre boîte! De notre coté, son code a été retiré ou récrit après son départ parce qu'il avait trop de lacune. Du grand art!
6  0 
Avatar de Auteur
Expert éminent sénior https://www.developpez.com
Le 04/10/2015 à 16:00
Par contre, je crois qu'il y a une petite erreur :
Code : Sélectionner tout
int KITTENS_OF_THE_WORLD
ce n'est pas plutôt un unsigned long ?
4  0 
Avatar de Haseo86
Membre éclairé https://www.developpez.com
Le 05/10/2015 à 22:11
Mouais... l'idée est amusante, mais les commentaires sont assez condescendants, c'est dommage.
5  1 
Avatar de Jipété
Expert éminent sénior https://www.developpez.com
Le 05/10/2015 à 22:43
Citation Envoyé par Victor Vincent Voir le message
Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins
Un code a des besoins qui lui sont propres ? Je serais curieux de savoir lesquels...
8  4 
Avatar de fcharton2
Membre averti https://www.developpez.com
Le 05/10/2015 à 23:39
Citation Envoyé par DonQuiche Voir le message
Je ne suis pas fan de Haskell mais il a des atouts indéniables...

Code : Sélectionner tout
1
2
3
fib 0 = 0
fib 1 = 1
fib n = fib(n-1) + fib(n-2)
A la syntaxe près, c'est quasiment le même code que l'étudiant débutant (si on le nettoie un tout petit peu), non?

Pour le docteur en maths, on peut faire nettement mieux que la formule de Binet. Les termes de la suite de fibonacci sont les coefficients du développement en série entière de x / (1-x-x^2). En J, c'est 5 opérateurs...

Code : Sélectionner tout
(%-.-*:)t.
Ca se lit "inverse de (%) 1-x (-.) - (-) x^2 ( x: ) en Taylor (t.)"

@emazoyer : la formule de Binet (la solution du docteur en maths de l'exemple, si on oublie le calcul de la multiplication et de la puissance comme des additions déguisées...), n'est pas exponentielle, mais O(1): on écrit Fib(n)= floor(Phi^n/sqrt(5)), (en pratique il n'y a pas besoin de la seconde partie de la formule) et ça coute tout au plus une exponentielle. C'est plus rapide qu'un calcul direct avec mémoisation (qui est O(n))

Francois
4  0 
Avatar de emazoyer
Membre à l'essai https://www.developpez.com
Le 06/10/2015 à 0:51
@fcharton2
Tout à fait, mea culpa, j'ai oublié l'option prof de math dans ma remarque.

Math : O(1).
Mémoïsation simple : O(n)
Mémoïsation à l'initialisation : 325 appels à l'intialisation puis 1 opération pour chaque appel (difficile de faire mieux ).

Je voulais simple indiquer que tout appel consécutifs à des méthodes utilisant les mêmes calculs devrait interpeler tout informaticien.
Dans ma vie d'informaticien j'ai amélioré un export d'une heure en export de 2 mn en transformant une méthode en O(n3) en O(n).
Et sans modifier l'algorithme en soi (cas du mathématicien), simplement en évitant l'oubli des valeurs déjà calculées.
4  0 
Avatar de eulbobo
Membre chevronné https://www.developpez.com
Le 06/10/2015 à 11:52
Il manque le code du développeur en SSII

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
import com.math.allYouNeed.Fibonacci

...

/**
 * TODO document me
 */
public long getFibonaci(long i){
      return Fibonacci.valueOf(i);
}
Avec l'ajout de 250Mo de jar dans le classpath
4  0 
Avatar de Victor Vincent
Expert éminent sénior https://www.developpez.com
Le 04/10/2015 à 13:22
Citation Envoyé par Auteur Voir le message
Tu as oublié de posté le code du chat (le plus important de tous quand même) ?
En fait je ne peux ajouter que 5 images apparemment, le code du chat est la 6ème image.
Mais je confirme, c'est le plus important en effet
3  0 
Avatar de Auteur
Expert éminent sénior https://www.developpez.com
Le 04/10/2015 à 12:46
Tu as oublié de posté le code du chat (le plus important de tous quand même) ?
2  0 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web