Je suis en train de revoir les réglages de mon éditeur préféré du moment (Sublime Text 3), entre autres pour la présentation du code [1], et plus spécialement un des sujets sensible : l’indentation.
Depuis la nuit des temps … de Dotclear, on utilise une indentation avec des tabulations — véritables, équivalentes à 4 espaces ; et j’avoue que la tabulation qui « coûte » 1 octet plutôt que 4 espaces qui en coûtent 4, quand on vient d’un temps où chaque octet était précieux (début des années 80 par exemple), ça m’a toujours paru bizarre que la plupart privilégient les 4 espaces !
Surtout que le précieux, à savoir la mémoire utilisée est toujours d’actualité lorsqu’on parle de bande passante, etc, et c’est d’ailleurs pour ça qu’on utilise la plupart du temps des minifiers qui sont des petits programmes qui enlèvent tout ce qui est superflu comme par exemple tous les espaces utilisés pour l’indentation du code, mais pas que.
<?php
if (!defined('DC_CONTEXT_ADMIN')) {return;}
$this->registerModule(
"Tidy Administration", // Name
"Customize your dotclear administration", // Description
"Franck Paul", // Author
'0.7', // Version
array(
'requires' => array(array('core', '2.13')), // Dependencies
'type' => 'plugin' // Type
)
);
Depuis quelques années ceux qui développent en PHP se sont mis d’accord sur des règles de développement, et une en particulier (PSR-2) concerne la présentation. Celle-ci impose (bien qu’on ne soit jamais tenu de l’appliquer) quatre espaces plutôt qu’une indentation sous forme de tabulation, et quelques autres règles qui changent légèrement des conventions qu’on utilise pour Dotclear.
Étant donné que je suis le dernier développeur vivant chez Dotclear — j’aime bien cette formule ! — j’ai choisi, en commençant par Clearbricks, de basculer sur PSR-2, au fur et à mesure de la reprise du code. Concernant les autres préconisations qui changent aussi (nom des classes, méthodes, espaces de nom, …), je pense que je verrai ça dans un deuxième temps.
Jusque là, tout va bien, on n’a parlé que de PHP et c’est assez simple.
Ensuite se pose la question des conventions à utiliser pour les sources en CSS, Javascript, HTML, …
$(function() {
// Iconset information
$('a.iconset-readme').modalText($(window).width() / 2 - 40, $(window).height() / 2 - 40);
// Iconset delete confirmation
$('table.iconset_list form input[type=submit][name=delete]').click(function() {
var p_name = $('input[name=iconset_id]', $(this).parent()).val();
return window.confirm(dotclear.msg.confirm_delete_iconset.replace('%s', p_name));
});
});
Pour l’instant pour Javascript, j’ai choisi 4 espaces aussi, mais je sais que certains (et pas des moindres comme chez Google par exemple) préconisent plutôt 2 espaces. Idem pour CSS/Sass, HTML/XML, 4 espaces, bien que j’hésite un peu pour ces derniers (une tabulation coûte moins cher que 4 espaces quand on charge un fichier HTML depuis un serveur).
/* Change admin fonts and make them a little bit bigger */
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,600,700);
@import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:400,600,700);
body {
font-family: 'Open Sans', Helvetica, Arial, sans-serif;
font-size: 130%;
}
pre, code, .codemirror {
font-family: 'Source Code Pro', 'Andale Mono', 'Courier New', monospace !important;
}
À tous les développeurs qui passent par ici, c’est quoi vos habitudes/préférences pour l’indentation, spécialement pour Javascript, CSS et HTML ?
Note
[1] Pour le formattage du code j’utilise le package CodeFormatter pour Sublime Text, extension qui gère PHP, Javascript/JSON, CSS/Sass, HTML/XML, Python, … soit à peu près tout ce qu’on utilise côté Dotclear et Clearbricks.
1 De Mathieu -
Perso, je suis pro tabulation en tete de ligne.
ansi si on prefere 2 ou 4 espace il suffit de changer le parametrage de son editeur. De plus pour fait un Backspace pour reculer d’une indentation plus que N fois pour supprimer ces maudits espaces me parait tellement naturelle.
Mais bon avec sublime text. ce n’est pas trop compliqué de passer des tabulations aux espaces et vice-versa.
2 De mirovinben -
une tabulation équivalente à 4 espaces.
éditeurs (surtout PHP et HTML) + (surtout CSS)
3 De Franck -
Mathieu je sais pour la tabulation que j’ai toujours privilégiée (dans le passé) vu qu’elle est plus pratique (dans la majorité des cas et des éditeurs) que l’usage des espaces, comme tu l’indiques.
mirovinben est-ce que tes éditeurs tiennent compte du fichier .editorconfig — j’en ai défini un pour Dotclear et un autre pour Clearbricks (sur nos dépôts) et leur contenu est identique — placé à la racine du projet ?
4 De saymonz -
Je code pas trop depuis quelques années mais j’étais aussi adepte des tabulations pour les raisons évoquées par Mathieu, la simplicité de n’avoir qu’un caractère à ajouter/supprimer.
Pour le HTML par contre on peut très vite arriver à des profondeurs gênantes (surtout si on essaie en plus de limiter les longueurs de lignes, mais on fait encore ça en 2017 ?). Puis dans Dotclear y a pas beaucoup de HTML pur, c’est soit des fichiers tpl soit des fichiers PHP non ?
5 De Franck -
saymonz il y a un peu de HTML, pas pur, étant donné qu’il est farci de balises template, dans les 3 jeux de template et dans les thèmes.
6 De mirovinben -
Franck, les réglages tabulation/nombre d’espaces se font pour mes deux éditeurs préférés (tournant sous windows) via le menu ad hoc…
Jamais entendu parler de .editorconfig.
7 De Franck -
Je parlais plutôt, mirovinben, de la capacité de tes éditeurs à prendre en compte automatiquement le fichier .editorconfig, si celui-ci était présent.
D’après la doc, pour Notepad++ il existe un plugin qui permet ça.