William Profile picture
Apr 8, 2023 16 tweets 3 min read Read on X
👨‍💻 Le framework ultime pour écrire du code maintenable et évolutif.

Découvre les principes #SOLID dans ce thread 🧱

⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️
Le principe #SOLID est un ensemble de règles pour écrire du code maintenable, évolutif et robuste. Il est enseigné dans beaucoup d'écoles, et pour cause, si vous voulez un projet orienté objet propre, vous devrez appliquer ces principes !
1️⃣ | Principe - Single Responsibility principle

Le S représente le Single Responsibility Principle, qui stipule qu'une classe ne devrait avoir qu'une seule responsabilité.
1️⃣ | Exemple

Dans une application e-commerce, une classe qui s'occupe des commandes ne devrait pas également gérer les paiements. Il vaut mieux séparer ces responsabilités en deux classes distinctes.
2️⃣ | Principe - Open Closed principle

Le O représente le principe Open-Closed, qui dit qu'une classe devrait être ouverte à l'extension, mais fermée à la modification. En gros, c'est ok d'ajouter de nouvelles fonctionnalités, mais on ne touche pas au code existant.
2️⃣ | Exemple

Dans le cas d'un moteur de recherche, plutôt que de modifier la fonction de recherche existante pour ajouter de nouvelles fonctionnalités, on peut créer de nouvelles classes pour étendre les fonctionnalités de recherche.
3️⃣ | Principe - Liskov substitution principle

Le L représente le principe de substitution de Liskov, qui stipule qu'une classe dérivée devrait être substituable à sa classe de base sans altérer le comportement du programme.

Ok, celle-là est compliquée, voyons un exemple
3️⃣ | Exemple

Prenons une application orienté objet basique, autour des animaux. Si une classe Chien hérite de la classe Animal, elle devrait pouvoir être substituée à la place de la classe Animal sans altérer le comportement du code.
4️⃣ | Principe - Interface Segregation Principle

Le I représente le principe d'interface de ségrégation, qui dit qu'une classe ne devrait pas être forcée de dépendre d'interfaces dont elle n'a pas besoin.
4️⃣ | Exemple

Si on a une classe qui envoie des emails, si elle utilise des méthodes pour envoyer et enregistrer des emails, mais qu'elle n'a besoin que de la méthode d'envoi, il vaut mieux séparer ces méthodes en deux interfaces distinctes.
5️⃣ | Principe - Dependency Inversion Principle

Le D représente le principe de dépendance inversion, qui stipule que les modules de haut niveau ne devraient pas dépendre de modules de bas niveau, mais plutôt d'abstractions.
5️⃣ | Exemple

Dans une application de facturation, plutôt que d'avoir un module de facturation qui dépend directement de crédit mutuel, il vaut mieux utiliser une abstraction telle qu'une interface pour pouvoir changer rapidement de crédit mutuel à PayPal en cas de soucis.
🔚 CONCLUSION

Ces principes sont relativement durs à assimiler au début, mais toujours les avoirs en tête permet vraiment de faire la différence entre du code propre et du code sale, et les appliquer vous fera gagner beaucoup de temps sur le long terme
La différence entre les bons développeurs et les mauvais réside dans la rigueur que ceux-ci appliquent à leur code, et je peux vous garantir que sur des gros projets, cela fait une différence !
J'ai essayé d'être synthétique dans ce thread, mais si vous voulez, je peux faire un thread par principe, en les détaillants vraiment en profondeur, avec des exemples, etc ...
En espérant que ce thread vous aura plus, je vous retrouve demain pour le prochain thread du challenge d'un thread par jour

KISS ❤️

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with William

William Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @DandreaWilliam

Apr 21, 2023
➡️ GAFAM Tech Interview Question ⬅️

⁉️ Comment vérifier qu’un tableau est un sous-tableau (subarray) d’un autre tableau ?

👉 Essayez d'y réfléchir avant d'ouvrir ce #thread

💻 S1-E1 des #TechInterviewQuestionsDeWil
Aujourd'hui, nous allons voir la solution simple, qui est en o(N^2). C'est la solution naïve. Image
Nous allons explorer chaque sous-tableau de 'array' (chaque sous-tableau aura la même longueur que 'subArray'.

Si array = [1,2,3,4,5,6] et subArray = [3,4,5], en sortie du deuxième for, on aura les sous-tableaux [1,2,3], [2,3,4], [3,4,5] ...
Read 6 tweets
Apr 20, 2023
➡️ Tech Interview Question 1 ⬅️

🖥️ Qu’est-ce qu’un “subarray” et comment vérifier qu’un array est un subarray d’un autre array ?

🧵 La réponse, dans ce #thread

S1-E1 des #TechInterviewQuestionsDeWil
Un subarray est un extrait d’un tableau plus grand. On appelle cela une plage contiguë de valeurs dans un array.

Exemple :
[3, 4, 5] est un subarray de [1, 2, 3, 4, 5, 6, 7, 8]
[2, 4, 6] n’est pas un subarray de [1, 2, 3, 4, 5, 6, 7, 8]
Il faut nécessairement la même suite de valeurs dans le grand tableau et dans le petit, sans éléments intermédiaires.

Par exemple, [2, 4, 6] n’est pas un subarray mais [2, 3, 4, 5, 6] l’aurait été, car dans [1, 2, 3, 4, 5, 6, 7, 8] on retrouve la même suite de valeurs.
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(