Comment faites-vous pour préserver votre code lisible ?
- WritingBadCode
- Graduate


- Inscription: Avr 28, 2011
- Messages: 214
- Loc: Sweden
- Status: Offline
J'écrivais un site en PHP quelques jours il y a, c'est la seule chose que je me suis concentré sur tout ce qui était tellement évident, puis JavaScript toux mon intérêt et maintenant quand je remontent au code et trouver un peu bug, je me rends compte que damn. Je pourrais réécrire ainsi beaucoup de cela de zéro, au moins certaines des fonctions. Cela devrait éliminer les bugs et rendre le code mieux à la recherche. Je pensais jamais vraiment que je serais incapable de comprendre correctement mes fonctions et variables. J'ai pensé qui n'arrive qu'aux autres.
Quelles sont les pratiques que les gens ici suivre pour rendre leur code compréhensible ?
Personnellement, je fais ce qui suit : J'essaie de donner des noms de variables qui représentent leurs fonctionnalités, et il en va de même avec toutes les fonctions. = / Généralement ajouter un commentaire à une seule ligne lorsque j'écris quelque chose qui pourrait être un peu difficile à comprendre (mais je n'a pas cette fois).
Personnellement, je fais ce qui suit : J'essaie de donner des noms de variables qui représentent leurs fonctionnalités, et il en va de même avec toutes les fonctions. = / Généralement ajouter un commentaire à une seule ligne lorsque j'écris quelque chose qui pourrait être un peu difficile à comprendre (mais je n'a pas cette fois).
- Anonymous
- Bot


- Inscription: 25 Feb 2008
- Messages: ?
- Loc: Ozzuland
- Status: Online
Juin 1st, 2011, 2:04 pm
- natas
- PHP Ninja


- Inscription: Mar 28, 2009
- Messages: 305
- Loc: AFK
- Status: Offline
J'ai travaillé sur modding ajouté un forum pour un ami à moi qui veut beaucoup de nouvelles choses et qu'il est impossible de trouver un emporte-pièce pour. Donc, j'ai toujours ajouter un commentaire où j'ajoute stuff et une brève description de ce que je faisais, afin que la prochain guy ne pas faire de conjectures tellement.
Custom Web Design
- spork
- Brewmaster


- Inscription: Sep 22, 2003
- Messages: 6128
- Loc: Seattle, WA
- Status: Offline
- WritingBadCode
- Graduate


- Inscription: Avr 28, 2011
- Messages: 214
- Loc: Sweden
- Status: Offline
- Bogey
- Bogey


- Inscription: Juil 14, 2005
- Messages: 8211
- Loc: USA
- Status: Offline
Voici un échantillon d'une fonction au sein d'une classe.
Conserver le code indenté par 4 espaces (pas un onglet...vous ne savez pas pourquoi). En commentaire chaque ligne de code que j'écris pour vous assurer que lorsque je reviens, mal être capable de comprendre le code et de l'améliorer. Je décris la fonction et sa variable dans un commentaire de bloc avant que j'écris la fonction. J'ai parfois fournir un exemple de la façon d'utiliser la fonction dans le bloc de commentaires, que j'ai mis avant la fonction...
Je nomme mon variables avec un nom qui correspond le mieux à sa fonction dans le moins de mots possibles. Il en va de même pour les fonctions et les noms de classe...
Tout en haut d'une page de classe ou de n'importe quel fichier PHP, la première chose à que faire est écrire un bloc de commentaires décrivant l'objet de pages.
Je commenter chaque variable je définis pour décrire la fonctionnalité / l'utilisation d'une variable.
Je garde chaque partie de mon code formaté en colonnes (comme vous pouvez le voir ci-dessus).
Je garde des tableaux de dépassement de capacité dans la ligne suivante formatée avec une pause dure à la fin de chaque ligne et début en retrait pour correspondre avec le début des valeurs tableaux.
Si ce n'est pas un tableau complet des valeurs mais un tableau qui a les clés et valeurs, puis j'ai mis en place de la manière suivante: (Notez les colonnes)
J'ai besoin parfois à droite un commentaire d'instruction ou juste une explication sur la raison pour laquelle Im faire quelque chose de la façon dont j'ai fait...
C'est à ce sujet de ce que je peux penser et de l'époque Im donné dès maintenant...je pourrais revenir plus tard et améliorer sur ce poste
PHP Code: [ Select ]
/*
* public function set_opts( array $options)
* @array $options - The array that we use to set the options to
* The key is the option name while the value is the value
* array('cache_results' => true);
*
* Function to set some options outside of the class
*/
public function set_opts($options)
{
// Checking if we have a cache_results option
if(isset($options['cache_results']))
{
// We do... set it to true or false...
$this->cache_results = ($options['cache_results'] == true) ? true : false;
}
}
* public function set_opts( array $options)
* @array $options - The array that we use to set the options to
* The key is the option name while the value is the value
* array('cache_results' => true);
*
* Function to set some options outside of the class
*/
public function set_opts($options)
{
// Checking if we have a cache_results option
if(isset($options['cache_results']))
{
// We do... set it to true or false...
$this->cache_results = ($options['cache_results'] == true) ? true : false;
}
}
- /*
- * public function set_opts( array $options)
- * @array $options - The array that we use to set the options to
- * The key is the option name while the value is the value
- * array('cache_results' => true);
- *
- * Function to set some options outside of the class
- */
- public function set_opts($options)
- {
- // Checking if we have a cache_results option
- if(isset($options['cache_results']))
- {
- // We do... set it to true or false...
- $this->cache_results = ($options['cache_results'] == true) ? true : false;
- }
- }
Conserver le code indenté par 4 espaces (pas un onglet...vous ne savez pas pourquoi). En commentaire chaque ligne de code que j'écris pour vous assurer que lorsque je reviens, mal être capable de comprendre le code et de l'améliorer. Je décris la fonction et sa variable dans un commentaire de bloc avant que j'écris la fonction. J'ai parfois fournir un exemple de la façon d'utiliser la fonction dans le bloc de commentaires, que j'ai mis avant la fonction...
PHP Code: [ Select ]
/*
* public function build_key_query( array $sql)
* @array $sql - the SQL array
*
* Function that builds queries using an array
* Usage example...
*
* $sql = array(
* 'SELECT' => '*',
* 'FROM' => '`database`.`table`',
* 'JOIN' => '`table2',
* 'ON' => '`table1`.`field1` = `table2`.`field2`',
* 'WHERE' => array(
* '`field1`' => 'value1',
* '`field2`' => 'value2'),
* 'ORDER BY' => '`field2`',
* 'ASC' => null
* );
*/
* public function build_key_query( array $sql)
* @array $sql - the SQL array
*
* Function that builds queries using an array
* Usage example...
*
* $sql = array(
* 'SELECT' => '*',
* 'FROM' => '`database`.`table`',
* 'JOIN' => '`table2',
* 'ON' => '`table1`.`field1` = `table2`.`field2`',
* 'WHERE' => array(
* '`field1`' => 'value1',
* '`field2`' => 'value2'),
* 'ORDER BY' => '`field2`',
* 'ASC' => null
* );
*/
- /*
- * public function build_key_query( array $sql)
- * @array $sql - the SQL array
- *
- * Function that builds queries using an array
- * Usage example...
- *
- * $sql = array(
- * 'SELECT' => '*',
- * 'FROM' => '`database`.`table`',
- * 'JOIN' => '`table2',
- * 'ON' => '`table1`.`field1` = `table2`.`field2`',
- * 'WHERE' => array(
- * '`field1`' => 'value1',
- * '`field2`' => 'value2'),
- * 'ORDER BY' => '`field2`',
- * 'ASC' => null
- * );
- */
Je nomme mon variables avec un nom qui correspond le mieux à sa fonction dans le moins de mots possibles. Il en va de même pour les fonctions et les noms de classe...
Tout en haut d'une page de classe ou de n'importe quel fichier PHP, la première chose à que faire est écrire un bloc de commentaires décrivant l'objet de pages.
Je commenter chaque variable je définis pour décrire la fonctionnalité / l'utilisation d'une variable.
PHP Code: [ Select ]
// Variables used throughout the class for connection purposes
private $var_file = 'includes/vars.xml'; // The location of database variables (Relative to the main PHP file using).
private $persistant = false; // If we need to use a persistant connection, set this to true
private $free_result = true; // Clears the resource result after every call
private $admin_debug = true; // If the debugging should be created for the admin... ONLY if for admin
private $cache_results = true; // If you want to use the caching capabilities, set this to true
private $cache_dir = 'cache/sql/'; // The directory where the cache files would be written to
private $silent = false; // Silence all errors (graceful error) if set to true
private $log_errors = true; // Wether we should log the errors or not
private $log_file = 'logs/sql.txt'; // The location of the log file
private $cache_time_limit = 60; // The amount of seconds you want the cache to exist (1 Day [86400] by default)
// 60 = 1 Minute; 3600 = 1 Hour; 43200 = 12 Hours; 2629743.83 = 1 Month; 15778463 = 6 Months; 31556926 = 1 Year
private $var_file = 'includes/vars.xml'; // The location of database variables (Relative to the main PHP file using).
private $persistant = false; // If we need to use a persistant connection, set this to true
private $free_result = true; // Clears the resource result after every call
private $admin_debug = true; // If the debugging should be created for the admin... ONLY if for admin
private $cache_results = true; // If you want to use the caching capabilities, set this to true
private $cache_dir = 'cache/sql/'; // The directory where the cache files would be written to
private $silent = false; // Silence all errors (graceful error) if set to true
private $log_errors = true; // Wether we should log the errors or not
private $log_file = 'logs/sql.txt'; // The location of the log file
private $cache_time_limit = 60; // The amount of seconds you want the cache to exist (1 Day [86400] by default)
// 60 = 1 Minute; 3600 = 1 Hour; 43200 = 12 Hours; 2629743.83 = 1 Month; 15778463 = 6 Months; 31556926 = 1 Year
- // Variables used throughout the class for connection purposes
- private $var_file = 'includes/vars.xml'; // The location of database variables (Relative to the main PHP file using).
- private $persistant = false; // If we need to use a persistant connection, set this to true
- private $free_result = true; // Clears the resource result after every call
- private $admin_debug = true; // If the debugging should be created for the admin... ONLY if for admin
- private $cache_results = true; // If you want to use the caching capabilities, set this to true
- private $cache_dir = 'cache/sql/'; // The directory where the cache files would be written to
- private $silent = false; // Silence all errors (graceful error) if set to true
- private $log_errors = true; // Wether we should log the errors or not
- private $log_file = 'logs/sql.txt'; // The location of the log file
- private $cache_time_limit = 60; // The amount of seconds you want the cache to exist (1 Day [86400] by default)
- // 60 = 1 Minute; 3600 = 1 Hour; 43200 = 12 Hours; 2629743.83 = 1 Month; 15778463 = 6 Months; 31556926 = 1 Year
Je garde chaque partie de mon code formaté en colonnes (comme vous pouvez le voir ci-dessus).
Je garde des tableaux de dépassement de capacité dans la ligne suivante formatée avec une pause dure à la fin de chaque ligne et début en retrait pour correspondre avec le début des valeurs tableaux.
PHP Code: [ Select ]
// Allowed SQL query functions to be performed. For added security wall.
private $sql_queries = array('SELECT', 'FROM', 'LEFT JOIN', 'JOIN', 'RIGHT JOIN', 'INNER JOIN', 'OUTER JOIN', 'OUTER RIGHT JOIN',
'OUTER LEFT JOIN', 'INNER RIGHT JOIN', 'INNER LEFT JOIN', 'WHERE', 'ORDER BY', 'ASC', 'DESC', 'GROUP BY',
'HAVING', 'ON', 'AVG', 'COUNT', 'SUM', 'FIRST', 'LAST', 'MAX', 'MIN', 'UCASE', 'LCASE', 'MID', 'LEN',
'ROUND', 'NOW', 'FORMAT', 'ABS', 'SIGN', 'MOD', 'ROUND', 'POW', 'SQRT', 'LEAST', 'GREATEST', 'LOWER',
'UPPER', 'CONCAT', 'LENGTH', 'LTRIM', 'TRIM', 'RTRIM', 'SUBSTRING', 'DATEOB', 'USER', 'PRIVGROUPS',
'IF', 'COALESCE', 'UNIQUEKEY', 'TONUMBER', 'RAND', 'SELECT DISTINCT', 'UPDATE', 'DELETE', 'INSERT',
'UNION', 'DELETE FROM');
private $sql_queries = array('SELECT', 'FROM', 'LEFT JOIN', 'JOIN', 'RIGHT JOIN', 'INNER JOIN', 'OUTER JOIN', 'OUTER RIGHT JOIN',
'OUTER LEFT JOIN', 'INNER RIGHT JOIN', 'INNER LEFT JOIN', 'WHERE', 'ORDER BY', 'ASC', 'DESC', 'GROUP BY',
'HAVING', 'ON', 'AVG', 'COUNT', 'SUM', 'FIRST', 'LAST', 'MAX', 'MIN', 'UCASE', 'LCASE', 'MID', 'LEN',
'ROUND', 'NOW', 'FORMAT', 'ABS', 'SIGN', 'MOD', 'ROUND', 'POW', 'SQRT', 'LEAST', 'GREATEST', 'LOWER',
'UPPER', 'CONCAT', 'LENGTH', 'LTRIM', 'TRIM', 'RTRIM', 'SUBSTRING', 'DATEOB', 'USER', 'PRIVGROUPS',
'IF', 'COALESCE', 'UNIQUEKEY', 'TONUMBER', 'RAND', 'SELECT DISTINCT', 'UPDATE', 'DELETE', 'INSERT',
'UNION', 'DELETE FROM');
- // Allowed SQL query functions to be performed. For added security wall.
- private $sql_queries = array('SELECT', 'FROM', 'LEFT JOIN', 'JOIN', 'RIGHT JOIN', 'INNER JOIN', 'OUTER JOIN', 'OUTER RIGHT JOIN',
- 'OUTER LEFT JOIN', 'INNER RIGHT JOIN', 'INNER LEFT JOIN', 'WHERE', 'ORDER BY', 'ASC', 'DESC', 'GROUP BY',
- 'HAVING', 'ON', 'AVG', 'COUNT', 'SUM', 'FIRST', 'LAST', 'MAX', 'MIN', 'UCASE', 'LCASE', 'MID', 'LEN',
- 'ROUND', 'NOW', 'FORMAT', 'ABS', 'SIGN', 'MOD', 'ROUND', 'POW', 'SQRT', 'LEAST', 'GREATEST', 'LOWER',
- 'UPPER', 'CONCAT', 'LENGTH', 'LTRIM', 'TRIM', 'RTRIM', 'SUBSTRING', 'DATEOB', 'USER', 'PRIVGROUPS',
- 'IF', 'COALESCE', 'UNIQUEKEY', 'TONUMBER', 'RAND', 'SELECT DISTINCT', 'UPDATE', 'DELETE', 'INSERT',
- 'UNION', 'DELETE FROM');
Si ce n'est pas un tableau complet des valeurs mais un tableau qui a les clés et valeurs, puis j'ai mis en place de la manière suivante: (Notez les colonnes)
PHP Code: [ Select ]
// Allowed SQL functions (0 = Not Allowed; 1 = Allowed)
private $all_funcs = array('CREATE' => 0,
'DROP' => 0,
'ALTER' => 0,
'CREATE INDEX' => 1,
'UPDATE' => 1,
'INSERT' => 1,
'SELECT' => 1
);
private $all_funcs = array('CREATE' => 0,
'DROP' => 0,
'ALTER' => 0,
'CREATE INDEX' => 1,
'UPDATE' => 1,
'INSERT' => 1,
'SELECT' => 1
);
- // Allowed SQL functions (0 = Not Allowed; 1 = Allowed)
- private $all_funcs = array('CREATE' => 0,
- 'DROP' => 0,
- 'ALTER' => 0,
- 'CREATE INDEX' => 1,
- 'UPDATE' => 1,
- 'INSERT' => 1,
- 'SELECT' => 1
- );
J'ai besoin parfois à droite un commentaire d'instruction ou juste une explication sur la raison pour laquelle Im faire quelque chose de la façon dont j'ai fait...
PHP Code: [ Select ]
/*
* Overwriting silent to false if admin debug is set to true. This way, if the admin
* debug is set to true, the admin would be able to see all the errors thrown by the
* class and give a better idea of whats going on if something doesn't work.
*/
if($this->admin_debug === true)
{
$this->silent = false;
}
* Overwriting silent to false if admin debug is set to true. This way, if the admin
* debug is set to true, the admin would be able to see all the errors thrown by the
* class and give a better idea of whats going on if something doesn't work.
*/
if($this->admin_debug === true)
{
$this->silent = false;
}
- /*
- * Overwriting silent to false if admin debug is set to true. This way, if the admin
- * debug is set to true, the admin would be able to see all the errors thrown by the
- * class and give a better idea of whats going on if something doesn't work.
- */
- if($this->admin_debug === true)
- {
- $this->silent = false;
- }
C'est à ce sujet de ce que je peux penser et de l'époque Im donné dès maintenant...je pourrais revenir plus tard et améliorer sur ce poste
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
- WritingBadCode
- Graduate


- Inscription: Avr 28, 2011
- Messages: 214
- Loc: Sweden
- Status: Offline
- this213
- Guru


- Inscription: Mar 01, 2004
- Messages: 1242
- Loc: ./
- Status: Offline
Si Im utilisant rien thats extrait les niveaux 2 ou plus sortir, je fais une note de l'endroit où ses définis afin que la prochain guy ne pas creuser les dossiers de 8000 à trouver. Autre que celle, les commentaires seulement je fais sont soit disant « cela maintenant » ou, plus rarement, d'expliquer les segments particulièrement complexes. J'ai certainement ne me prononce pas sur chaque objet unique variables parce que, je l'espère, quiconque creuse autour de mon code sera capable de lire le code lui-même - et si elles ne peuvent pas, je me payé deux fois plus de fixer mon propre code qu'ils briser.
Toutefois, je suis un code-nazi. Tout mon code suit mon propre ensemble de mise en forme de lignes directrices qui, au fil des ans, s'est stabilisée au point qu'une routine d'un projet peut glisser dans un autre projet et regarder comme si elle ont été écrites pour elle. Cela comprend la mise en page de code, naming conventions et séparation de fichier pour l'essentiel. Quelques exemples précis comprennent la création de classes et fonctions dans leurs propres fichiers, en utilisant la méthode des extrêmes identiques et l'indentation, gardant les commentaires de la 1 ligne (à moins que son droit d'auteur) et je ne permettent pas de sortie directe de toutes les fonctions, à moins que l'objet de cette fonction est sortie. Je fais également un commentaire à un crochet fermant à fermeture whats et je tranche toujours conditionnels. Ces deux seuls peut économiser beaucoup de temps à essayer de déboguer quelqu'un estiment code (ou votre propre après quelques mois de regarde ne pas).
Bien que le Ive jamais écrite d'un de mes propres directives de code, les développeurs qui travaillent pour moi comme par magie suivre avec perfection près (parfois, je dois dire quelque chose ici et là , mais ses rares et uniquement avec les nouvelles personnes). Une fois qu'ils voient comment j'ai mon code, ils emboîter le pas.
Toutefois, je suis un code-nazi. Tout mon code suit mon propre ensemble de mise en forme de lignes directrices qui, au fil des ans, s'est stabilisée au point qu'une routine d'un projet peut glisser dans un autre projet et regarder comme si elle ont été écrites pour elle. Cela comprend la mise en page de code, naming conventions et séparation de fichier pour l'essentiel. Quelques exemples précis comprennent la création de classes et fonctions dans leurs propres fichiers, en utilisant la méthode des extrêmes identiques et l'indentation, gardant les commentaires de la 1 ligne (à moins que son droit d'auteur) et je ne permettent pas de sortie directe de toutes les fonctions, à moins que l'objet de cette fonction est sortie. Je fais également un commentaire à un crochet fermant à fermeture whats et je tranche toujours conditionnels. Ces deux seuls peut économiser beaucoup de temps à essayer de déboguer quelqu'un estiment code (ou votre propre après quelques mois de regarde ne pas).
Bien que le Ive jamais écrite d'un de mes propres directives de code, les développeurs qui travaillent pour moi comme par magie suivre avec perfection près (parfois, je dois dire quelque chose ici et là , mais ses rares et uniquement avec les nouvelles personnes). Une fois qu'ils voient comment j'ai mon code, ils emboîter le pas.
- sherma
- Silver Member


- Inscription: Juin 13, 2011
- Messages: 127
- Status: Offline
Je ne sais pas pourquoi, mais ce poste me rappelle quelque chose, j'ai couru à travers lors de la lecture des nuits il y a quelques et c'est « obscurcir code »... savez-vous qu'ils ont effectivement concours internationales pour qui? !
de toute façon, je suis d'accord avec la façon dont les bogies. Mon seul problème à mémoriser réécrire mes commentaires lors de revenir en arrière et de modifier quelque chose dans le code.
de toute façon, je suis d'accord avec la façon dont les bogies. Mon seul problème à mémoriser réécrire mes commentaires lors de revenir en arrière et de modifier quelque chose dans le code.
Page 1 sur 1
Pour répondre à ce sujet, vous devez vous connecter ou vous enregistrer. Il est gratuit.
Afficher de l'information
- Total des messages de ce sujet: 8 messages
- Utilisateurs parcourant ce forum: Zealous et 140 invités
- Vous ne pouvez pas poster de nouveaux sujets
- Vous ne pouvez pas répondre aux sujets
- Vous ne pouvez pas éditer vos messages
- Vous ne pouvez pas supprimer vos messages
- Vous ne pouvez pas joindre des fichiers
