Oubli des standards pour les préférences – Google!

Décidément, Dart correspond de plus en plus aux problèmes cités dans ce blog. L’IDE de Dart basé sur Eclipse, sauvegarde les préférences dans un dossier, voici selon le site officiel où sont stockés ces données:

Windows: <user’s home directory>\DartEditor
Linux: $HOME/.dartEditor
Mac: $HOME/Library/Application Support/DartEditor

Cela me rappelle cet article… que je remets sur le tapis car cette fois-ci c’est google qui fait de la mauvaise pratique.

Sous Windows, Google se trompe, c’est dans « Local Setting » ou « Application Data ». Sous Linux, erreur aussi, c’est dans .config (source). Et sous Mac, cela semble subitement plus structuré, Google ne le fout pas à l’arrache à la racine du home. Étonnant ? Pas trop, l’équipe de Dart bosse sur des Macs (du moins une majorité j’ai cru voir sur les vidéos).

Google confirme donc ce que je raconte dans ce blog: les développeurs ne s’occupe correctement que de leur cas, pour les autres, ils les emmerdent, support minimal. A ne pas oublier mon article sur Google pour l’indentation: ce sont eux qui décident pour les autres.

Sous Windows il y a en plus un gros fail, le dossier utilisé est « Documents%20and%20Settings » et non « Documents and Settings ». Cela correspond à une valeur saisie en dur et non récupérée par l’API. Great!

Ark – logiciel du moyen âge

Ark, le seul logiciel qui ne connait pas la progression lors de la décompression (barre de progression style indéterminée), le seul logiciel dont on ne peut pas annuler une décompression, le seul logiciel qui plante sur une décompression, le seul logiciel qui ne sait pas afficher de message d’erreur et préfère laisser la barre de progression… et c’est le logiciel par défaut pour gérer les archives dans KDE ? la BLAGUE, même Windows doit être plus performant que ça.

La barre de progression fonctionne en fait par fichiers et non par octets, du coup si il y a un seul gros fichier, elle ne sert à rien, si un fichier est long, tout est faussé, et quand ça plante, impossible de savoir vraiment ce qui se passe. Merci KDE, logiciels à jour, arch linux, octobre 2012, pour graver ce moment de honte historique.

PS: il va de soi que j’ai installé 7-zip à coté qui s’intégre très bien dans Dolphin

Indentation: tabulation or space

Même les meilleurs font des erreurs. Google, ou sans généraliser, l’équipe de Dart, ou en généralisant encore moins, c’est seulement une partie de cette équipe, me font complètement rire sur leur recommandation d’indentation.

J’avais déjà abordé ce problème dans mon article Quand on code avec les pieds, en mettant en avant l’indentation non uniforme que l’on trouve dans les projets open source à cause de plusieurs contributeurs, parfois des espaces, parfois des tabulations.

Avec Dart, ils recommandent les espaces, ce qui est à mon avis une mauvaise idée, tout simplement car les espaces imposent visuellement la mise en forme. Or, en fonction des individus, du sexe, de l’âge, on peut préférer une plus grande indentation si on a des problèmes visuels par exemple, ou une plus petite si on aime coder sur son MacBook Air (comme Dart, j’ai vu des portable Apple sur leur vidéo, mais tout autre portable fait l’affaire bien sûr). Du coup avec les espaces on est BAISÉ, le codeur ne laisse pas le choix, et c’est pas cool pour un projet communautaire.

Par contre, une tabulation se configure selon la préférence de chacun et peut donc correspondre au nombre d’espaces que l’on souhaite. J’ai déjà vu des préférences où la tabulation correspondait à deux espaces, quatre majoritairement, huit de temps en temps.

Ceci dit, quel est l’argument de l’équipe Dart ?

Using spaces for formatting ensures the code looks the same in everyone’s editor. It also makes sure it looks the same when posted to blogs, or on code sites like Google Code or github.

LOLILOL ? Leur argument: utiliser des espaces permet à chacun de ne plus avoir de préférence, d’uniformiser le code chez tout le monde. Bravo. De plus, je vais encore moins utiliser des espaces pour que mon code soit le même quand je le mets sur un blog ou un site de code, quel putain d’argument foireux. Grosse déception.

Mais ce n’est pas fini, suite à cette grosse stupidité, le mec se permet de faire de l’humour:

You may complain that spaces take more effort to type. If that’s the case, I encourage you to pause your 8-track player, put on your parachute pants and go out and find a modern text editor that makes spaces as easy to work with as tabs.

Je pense que c’est le genre de mec qui ne doit pas savoir qu’un éditeur moderne permet de configurer la taille d’une tabulation. Quelle arrogance en tout cas, ça montre le niveau.

Il y a d’ailleurs déjà un ticket (en fait 4 doublons au total), mais personne ne donne d’argument, mais personne de chez Dart n’a refusé aussi.

Ceci dit, je comprends pourquoi il faut obliger les espaces, c’est parce que les mecs qui utilisent les tabulations font n’importe quoi. La tabulation doit servir exclusivement à l’indentation de bloc de code. Dit autrement, la tabulation ne peut figurer qu’en début de ligne. A partir du moment où du texte est écrit, ce sont des espaces qu’il faut utiliser.

En effet, chacune possède ses préférences de tailles de tabulation, une tabulation de 8 espaces occupera 8 espaces en début de ligne car aucun caractère n’a été saisi. Par contre, insérer une tabulation de 8 espaces alors qu’un caractère a déjà été saisi, la tabulation occupera 7 espaces visuellement, cet espace sera réduit ou plus grand en fonction des préférences de chacun. Cela ne peut donc pas servir pour aligner du texte, outre bien sûr l’alignement d’indentation.

Et à ce moment là, j’ai envie de dire pourquoi les fameux « modern text editors » ne gèrent pas ce cas ? Proposer une option pour remplacer les tabulations par des espaces à partir du moment où les tabulations ne sont pas en début de ligne ? La réponse est simple, tout le monde s’en branle et préfère imposer leur point de vu. Alors autant choisir le moins pire: la tabulation xD Et un jour peut-être, les éditeurs modernes de texte comprendront qu’il faudra implémenter l’option que je propose ^^