|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Dans cet article, je vais essayer de vous présenter les principes SOLID, tels que décrits dans le livre de Robert Martin, en Agile Software Development, Principles, Patterns, and Practices.
On va voir l'intérêt de ces principes, et comment les appliquer, de façon abordable par tout le monde. Accéder à l'article N'hésitez pas à laisser vos commentaires à la suite |
|
10
|
|
|
#2 | ||
|
Membre chevronné
![]() |
Bonjour et merci pour cet article très intéressant.
Je viens d'envoyer le lien à 2 de mes collègues auxquels j'essayais d'expliquer ces principes il y quelques temps. Une petite remarque sur le code exemple du chapitre II : Les méthodes Save() et GetById() du WorkItemDataAccess ne devrait-elle pas être static ? Je me base là sur la façon que tu as d'appeler ce code ici: Code C# :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
Super article effectivement, qui résume bien la plupart des notions présentés sur d'autres sites.
. Au passage j'aime bien la subtile référence au pattern activerecord plébiscité par les puristes RoR et que je trouve à titre personnel, parfaitement dégueulasse.Pour répondre à la question de papy214, moi je ne mettrais personnellement pas les méthodes en static. Eventuellement je ferais de la factory un singleton pour éviter d'avoir à l'instancier à chaque fois, mais il me semble pertinent de laisser les méthodes d'instance car : -> On peut imaginer que chaque factory hérite d'une interface commune de type ICRUD (pour lui permettre de gérer les opérations d'accès aux données élémentaires). Or il n'est pas possible d'hériter de méthodes statiques. -> On peut aussi imaginer une factory de base dont le but est le même a+ |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() |
djflex68 :
Dans mon message, je ne voulais pas dire qu'il "fallait" dans le sens obligatoire. Mais il me semble que la seule manière d'utiliser le code suivant: Code :
WorkItemDataAccess.Save(item.Id, item.Name); Mais peut-être que quelque chose m'a échappé. C'était une simple remarque sur le code, pas sur le fond de l'article que je trouve par ailleurs très intéressant. |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Salut,
Citation:
Comme quoi, malgré toute l'attention qu'on peut y porter et les relectures successives, il reste toujours des coquilles Je vais essayer de le modifier dans la journée (pas accès au kit pour le moment) Et merci des appréciations |
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() |
Ah ok autant pour moi...
je ne pensais pas que tu faisais référence à Citation:
Citation:
|
||
|
|
00
|
|
|
#7 | |||||
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 11 ![]() |
merci pour l'article
![]() Si je peux me permettre: Premier cadre de code: Citation:
Et tu dis que tu passes sur le couplage mais c'est pas beaucoup plus long de faire: Code :
Deuxième cadre: manque le T aussi + Citation:
Citation:
Voilà rien vu d'autre. |
|||||
|
|
00
|
|
|
#8 | ||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Ca y'est, j'ai mis a jour le document
@tehcyse, j'ai corrige les t manquants (je vais copier 100 fois "je n'ecrirais plus d'articles dans le train a 6h du mat'" Par contre, je n'ai pas change la requête en requête paramétrée...pourquoi ? juste parce que j'ai peur que ca brouille un peu les pistes (je sais, excuse a 2 frcs.), mais dans l'absolu, je ne ferais même pas : Code C# :
Mais plutôt: Code C# :
Par exemple... Voire un GetDataRow au lie de GetDataTable, ou autre |
||||
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() |
salut,
un article très intéressant pour bien appliquer les principales bonnes pratiques en DotNet, juste une petite remarque dans la partie ISP: Interface Segregation Principle, V - C. Exemple, je pense que le code suivant correspond à une interface pas une classe ?! Code :
__________________
Knoweledge Is Power In Digital World |
||
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Salut,
Citation:
Faut que je pense à modifier |
|||
|
00
|
|
|
#11 |
|
Membre du Club
![]() |
mais est ce que c'est une classe ou bien une interface? car dans les différents exemples que vous avez cités IWorkItem est une interface !
__________________
Knoweledge Is Power In Digital World |
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
bah oops 2, alors, j'étais pas réveillé cet aprèm.
c'est effectivement une interface, et corrigé |
|
00
|
|
|
#13 |
|
Membre du Club
![]() |
ok merci, maintenant c'est claire
__________________
Knoweledge Is Power In Digital World |
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 183 ![]() |
C'est peut-être hors-sujet mais ce ne sont pas également de bonnes pratiques pour d'autre langage OO, tel que C++ ?
Ou tout simplement pour tout langage OO. |
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Citation:
D'ou d'ailleurs le placement dans la rubrique conception |
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 183 ![]() |
Je n'ai pas encore tout lu mais je te fais part des deux fautes de frappes que j'ai remarqué dans la version pdf.
III - C - Exemple : apres le 2e cadre de code " à caque création d'un nouveau..." IV - B - Comment l'appliquer : debut 2e paragraphe " il faut le valider pout tous les clients" Sinon, super bon résumé. Le fait que parfois tu ne veuilles pas rentrer trop dans les détails est par moment assez frustrant mais ca donne une bonne vue d'ensemble. Peut-être un jour tu les approfondiras un par un ? :p |
|
|
00
|
|
|
#17 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Citation:
Citation:
![]() enfin, j'ai deja fait un gros bout (specifique .net) sur l'injection de dependances |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com