|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 723 ![]() |
Salut,
Juste une remarque au sujet des commentaires et documentations; En cours on nous dit qu'il faut tout commenter et tout documenter, mais c'est faux ! Il vaut mieux mille fois utiliser des variables parlantes, et ne commenter que ce qui mérite explication, en s'adressant à un développeur ( ce n'est pas une personne incompétente qui va lire le code source de toute manière ). Il faut attacher plus d'importance à la qualité et la lisibilité du _CODE_ plutôt que de faire du code illisible et d'espérer qu'un commentaire va sauver le coup en "expliquant" ce qu'un bout de code incompréhensible fait; Ca ne change rien ou pas grand chose au fait que si quelqu'un doit reprendre le travail derrière, il devra quand même comprendre le fonctionnement du code en lui même. La documentation, c'est un peu pareil; Documenter techniquement une application en long en large et en travers, c'est bien beau, mais ça ajoute beaucoup de contraintes; Une modification sur l'application doit également se répercuter sur la doc, et en général ça fait perdre beaucoup de temps. J'ai été confronté à beaucoup de projets où une doc existait au préalable, mais vu que les délais pour les maintenances évolutives ou correctives étaient courts, ça ne laissait pas le temps au développeurs de modifier les documentations, ce qui les rend obsolètes, et même dangereuses ! En gros, avec l'expérience que j'ai acquise, voila ce que j'en pense : les commentaires doivent être purement fonctionnels, le code doit être lisible et compréhensible facilement par un autre développeur ( vive l'orienté objet ! ) et la documentation doit être facilement modifiable et pas trop abondante pour permettre à un développeur de rapidement la modifier si cela s'avère nécessaire. A+
__________________
K |
|
|
00
|
|
|
#22 | |||||||
|
Membre éclairé
![]() ![]() |
Citation:
Autre solution : Code :
- Bien organiser son code (ne pas hésiter à chercher de nouvelles méthodes) - Développer en POO - Se créer des bibliothéques, librairies (ou utiliser de l'existant) pour faire le plus modulaire possible - Bien documenter son code (de façon intelligente) - Etre en constante veille technologique pour améliorer ses methodes de développement ... Et bien d'autres choses mais je vais m'arréter là ;0)
__________________
Gnarf ! www.uni-d.net (Wamp MSS) - Mon C.V. - Mon Blog .NET {VS 2010 && LINQ} && PHP {(Zend Studio || Notepad++) && (WAMP || WAMP mss)} && Multimédia {Flash CS5 && Photoshop CS5} Pensez au TAG
|
|||||||
|
|
00
|
|
|
#23 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 4 ![]() |
D'utiliser des simples cotes à la place de double ou toutes les autres petites recette de cuisine que je viens de voir ce n'est pas de l'optimisation. De faire de la POO non plus.
J'ai vu une quantité de développeurs s'imaginer qu'en faisant de la POO ils auraient un code propre et optimisé. Arrêtez de rêver. Pour faire de la bonne POO il faut faire une bonne conception objet. Et c'est autre chose que de fourrer son code dans des objets. Malheureusement avec PHP, l'objet se résume à cela. Et faire de l'objet avec un langage non typé qui ne gère pas la surcharge d'opérateur ça vous semble "optimisé" ? Bon, ça c'était pour le coté objet, j'attaquerai le coté optimisation classique où "comment éviter d'appliquer bêtement des recettes de cuisine" plus tard |
|
|
00
|
|
|
#24 | |||||||||
|
Invité de passage
![]() Inscription : février 2007 Messages : 1 ![]() |
Citation:
Pour rendre global des variable, j'utilise tout simplement le design-pattern "singleton". Pour php 4, un singleton s'obtient par le code : Code :
Code :
Ce qui donne : Code :
Code :
De façon générale, je pense qu'il faut toujours penser à utiliser les design-pattern de base (beaucoup sont décrit dans la section http://uml.developpez.com/ et on en trouve pas mal sur le site de zend ) et a découper le code metier de la vue a proprement dite (en utilisant un framework MVC ou bien en faisant marcher sa tête). Pour ceux qui ne veulent / peuvent pas utiliser de framework dédié à la gestion du MVC, je conseillerais de toujours séparer le code "fonctionel" du code de l'affichage. Pour cela, la "construction" de page suivante, même si elle est extremement sommaire, le permet :
Cette dernière démarche peut sembler evidente mais je connais beaucoup de développeur qui s'ammuse à imbriquer du SQL dans du HTML dans du traitement de formulaire. Enfin, une dernière note (que j'ai failli oublier) : la première chose à faire est de savoir quel encodage de fichier on utilise (UTF-8 ou ISO - php 5 et inf. on de gros problème avec l'UTF-8, hélas), si on utilise des espaces à la place des tabulation et de formater son code en suivant un guideline (il y en a plein, personellement, j'utilise celui de SUN)...et ne pas avoir peur de bien aerer son code source... Ceux qui pensent que cela est inutile non jamais fait de debuggage urgent sur un serveur de production ou il y a que VI... Je pourrais continuer des heures et des heures comme à parler des meilleurs pratiques de codage - surtout pour le web - mais mon patron n'apprécirais peut-être pas |
|||||||||
|
|
00
|
|
|
#25 | ||||
![]() ![]() Développeur Web Inscription : juillet 2003 Messages : 683 ![]() |
Citation:
L'utilisation de simpe quote n'est pas une "recette de cuisine", mais une règle. PHP autorise l'incorporation porc de variable directement dans des string, mais ça n'est PAS une utilisation normal. Une variable est une variable et un string, c'est un string. Dans tous les langages c'est comme ça. Ensuite, pour un string, le simple quote est plus rapide car par déf, il n'est pas parsé. Donc pourquoi ne pas naturellement prendre le plus rapide? Citation:
La POO n'est-elle pas pour autant une très bonne manière de faire un code clair? Pcq des gens s'en servent mal, il ne faut plus s'en servir? Citation:
Je vois pas le lien entre optimisation et surcharge d'opérateur... Le C ne gère pas la surcharge d'opérateur....pas optimisé ![]() Bref, le sujet n'est pas l'optimisation, mais la propreté du code. Tu as l'air d'en savoir long sur le sujet, pourtant, je vois rien de concret, que des remarques négatives, rien de constructif Citation:
Explique nous ceci par exemple Code :
Pour faire de la bonne POO il faut faire une bonne conception objet. ++ Pour tofou.letram vive le singleton
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
||||
|
00
|
|
|
#26 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2004 Messages : 42 ![]() |
Quelques "trucs et astuces" généraux et rapides pour PHP :
http://www.webdevlogs.com/php-speed-freaks/ On y trouve par exemple : Code :
Code :
|
||||
|
00
|
|
|
#27 |
![]() ![]() Développeur Web Inscription : juillet 2003 Messages : 683 ![]() |
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#28 | |
|
Membre éprouvé
![]() Inscription : février 2007 Messages : 475 ![]() |
Citation:
Mais ça n'est pas à proprement parler de surcharge d'opérateur dans le sens où la surcharge ne s'opère que si les membres de classe ne sont pas définis préalablement. Pouvoir surcharger purement et simplement "->" (comme en c++) serait encore plus fort. |
|
|
|
00
|
|
|
#29 |
![]() ![]() Développeur Web Inscription : juillet 2003 Messages : 683 ![]() |
C'est effectivement limité, mais c'est déjà un début.
Ce n'est d'ailleur pas une surcharge d'opérateur au sens le plus pure de la POO, mais ça montre qu'on y arrivera (PHP6 j'espere...)
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#30 | ||||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 4 ![]() |
Merci d'avoir réagit à mon post.
Citation:
Je ne suis pas sûr que ce soit flagrant. On doit gagner un petit peu. Par contre au niveau de la lisibilité du code c'est la même chose. Finalement c'est une bonne pratique "par principe". Citation:
Citation:
C'est donc bien lié. Citation:
La programmation objet est à la mode, ce qui entraine beaucoup de développeurs à penser que c'est mieux de faire de la POO que pas (cf. autres posts de ce topic). Pour moi, soit on aborde un problème donné suivant une méthode de conception objet et donc on l'implémentera naturellement avec un langage objet. Soit on l'aborde d'une manière "fonctionnelle" et alors je ne vois pas l'intérêt d'utiliser des objets. Tout ça pour dire que le choix de la POO n'a pas de sens c'est avant tout un choix sur une méthode de conception. Et donc la POO n'est pas un gage de qualité, ni d'optimisation (ni de compétence...). |
||||
|
|
00
|
|
|
#31 | |
|
Membre éprouvé
![]() Inscription : février 2007 Messages : 475 ![]() |
Citation:
Ainsi que dans les commentaires de la documentation online de la fonction print() (de mémoire) Personnellement, je m'efforce d'utiliser les simples quotes tant que je n'ai pas à utiliser les double quotes. En ce qui concerne la POO, c'est clair que c'est un paradigme ni meilleur ni pire qu'un autre. L'avantage de php c'est qu'il ne force pas l'utilisation de la POO (dieu merci ; ) |
|
|
|
00
|
|
|
#32 | |||
|
Expert Confirmé
![]() |
Citation:
Tous comptes fait, je vais continuer à utiliser des variables globales... Citation:
Citation:
|
|||
|
|
00
|
|
|
#33 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 24 ![]() |
A la place des variables globales, je préfère utiliser des variables statiques de classe.
Ce qui manque surtout en php c'est les espaces de noms... Par contre un conseil pour tous : arrêtez d'utiliser des post-incrémentations quand vous pouvez utiliser des pré-incrémentations, c'est valable pour tous les langages. a++ équivaudrait à : et ++a : (valable aussi pour les décrémentations évidemment) |
|
|
00
|
|
|
#34 | ||
|
Expert Confirmé Sénior
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 2 115 ![]() |
ne jamais définir les parametre de configuration comme des variables
toujours des constantes chargées dès le début du script ainsi il est impossible par quelque moyen que se soit de les modifier en cours d'exécution choisir des règles de codages et s'y tenir lire attentivement la littérature sur les design paterns concernant la programation (rechercher un élément dans une liste, tris, condition fonction etc.) par exemple les règles de l'art disent sur une boucle un seul point d'entrée un seul point de sortie ce qui signifie pas de break les design patterns proposent toutes sorte d'algo pour respecter ce genre de contraintes de même unfonction n'a qu'un point de sortie marqué par un retrun même si elle ne renvoie rien. pour ma part j'y ajoute aucune chaine destiné (elle sont définies dans des fichiers dédiés) à l'interface n'apparait dans le code pas de print pas d'echo il n'y a qu'un point qui envois la sortie les éléments de production son stoqués indépendament du code (les templates permettent cela mais aussi DOM) par exemple si je vérifie que la valeur d'un form est une date je ne fais pas mais ainsi il suffit de changer de template et de fichier de message pour adapter l'application. je limites aussi les blocs de code à une 50ene de lignes plus généralement 20 à 30 audelà je fait des fonctions (methodes). J'explicite toujours les indirections avec un commentaire par exemple si j'ai un variable d'instance "map" qui contient le nom d'une classe je commente toujours Code :
je mets des acolade systématiques s'il peu y avoir une ambiguité de lecture est équivalent à et non à par prevention je mets des accolades Je sépare les différente couche de mon application niveau View (interface externe GUI ou API) niveau Logique d'interface (logique d'enchainement de l'interface) niveau Logique Applicative (règles qui régissent ce que doit faire l'application) niveau Logique metier (règles qui définissent les composants de l'application et non coment on les utilisent) niveau accès aux données (DAO, File Net etc.) L'accès au donné et utilisable par toute application les objets metiers son commun à plusieurs applis la logique applicative définit le coeur de l'application la logique d'interface défini le comportement de l'interface et la vue son apparence A+JYT |
||
|
|
00
|
|
|
#35 |
|
Membre confirmé
![]() |
Juste une petite précision sur les objectifs de base de la POO :
- la réutilisation maximum de tout ou partie de vos classes - l'évolutivité de celles-ci Tout les avantages (et inconvénients) de la POO découlent de ces 2 objectifs. |
|
|
00
|
|
|
#36 | |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Citation:
http://www.google.fr/search?hl=fr&sa...chercher&meta= http://www.google.fr/search?hl=fr&sa...chercher&meta= en voila plus d'un. .... |
|
|
|
00
|
|
|
#37 | ||||||
|
Expert Confirmé
![]() |
Je n'arrive pas à assimiler ce concept... Utiliser la POO pour les bases de données, ou par exemple réaliser une classe mail, ok. Mais dans cette article par exemple, tout ce code serait plus simple que d'écrire directement le prix qui nous intéresse ? Je ne trouve pas ça vraiment optimisé, surtout vu le nombre de ligne qu'il faut en plus par rapport à une simple fonction, sans compter cette "embrouille de code" juste pour afficher un prix :
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#38 | ||||
![]() ![]() Développeur Web Inscription : juillet 2003 Messages : 683 ![]() |
Imagine que tu ais 3 algo incompréhensibles et dont on t'interdit de toute façon de toucher le code.
Il faut, pour un élément donné, le traiter par l'un des algos en fonction d'un paramètre arbitraire. Ces algos comprennent de nombreuses phases qu'il faudra appeler, toutes les phases sont "comparables". Par de simples fonctions, tu auras Code :
Code :
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
||||
|
00
|
|
|
#39 | |
|
Expert Confirmé
![]() |
Merci wamania pour ta réponse!
Ça devient légèrement plus claire. Cela dit : Citation:
|
|
|
|
00
|
|
|
#40 | |||||
![]() ![]() Développeur Web Inscription : juillet 2003 Messages : 683 ![]() |
Citation:
Code :
T'en loupe un, ça marche pas, imagine par exemple dans un framework avec 200 fichiers, le code ci-dessus pour être appelé depuis N fichiers différents suivants certains paramètres... Avec le "Strategy" Il n'y a QU'UN ajout à faire, la dedans Code :
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|||||
|
00
|
Copyright © 2000-2013 - www.developpez.com