Walid SASSI
Walid SASSI
  • 138
  • 152 696
Refactoring in Practice: The NetFox Demo Transformation with Bogdan
Welcome to another episode of Swift Academy! In this special follow-up episode, we continue our deep dive into legacy code with Bogdan, focusing on the practical aspects of refactoring. This time, we’re getting hands-on with the NetFox framework demo application, walking through the step-by-step process of improving and modernizing an existing codebase.
What You’ll Learn:
➔ Refactoring in Action: Watch as we refactor the NetFox demo application, breaking down each change and the rationale behind it.
➔ Testing Refactored Code: Learn how to write effective tests for refactored code, ensuring that changes don’t introduce new bugs.
➔ Encapsulation & Code Cleanup: Discover the importance of encapsulating properties and methods, and how to safely remove unused code.
➔ Refactoring Strategies: Gain insights into the strategies for creating reusable helper functions during refactoring to reduce code duplication and improve test maintainability.
➔ Balancing Refactoring with Risk: Understand how to assess and manage the risks of refactoring, including when and how to create tests to verify behavior before making changes.
Why Watch?
This episode is a must-watch for developers who want to see real-world refactoring in action. Bogdan provides detailed explanations of each refactoring decision, helping you understand the thought process behind making legacy code more maintainable and testable.
Join the Conversation:
Got questions about the refactoring process or the NetFox framework? Drop them in the comments below-we’d love to discuss them with you!
Don’t Forget to Like, Subscribe, and Hit the Notification Bell to stay updated on future episodes!
Timestamps:
0:00 Introduction
2:45 Why We Added a Callback in Error Cases
10:20 Encapsulating Properties and Methods
20:30 Safe Code Cleanup Practices
35:15 Writing Detailed Tests for Refactored Code
50:00 Creating Generic Helper Functions for Tests
📌 Follow Bogdan:
Bogdan is an experienced Swift developer with a passion for making legacy codebases clean, maintainable, and scalable. Connect with him to learn more about his approach to refactoring and software design.
🌐 Website: bpoplauschi.github.io/
📌 Follow Us:
𝕏: x.com/WalidSASSIIOS
🌐Website: www.walidsassi.com
🧑🏻‍💻Medium: medium.com/@sassiwalid
🧑🏻‍💻 Hasnode: swiftacademy.hashnode.dev
💼 Linkedin: www.linkedin.com/in/sassi-walid/
📺 TH-cam: www.youtube.com/@SwiftWithWalid
Tiktok: www.tiktok.com/@swiftacademypodcast
Instragram: swiftacademypodcast
#iOSDevelopment #Swift #Refactoring #LegacyCode #Testing #NetFox #SoftwareEngineering #SwiftAcademy
มุมมอง: 209

วีดีโอ

Taming Legacy Code: Refactoring for the Future with Bogdan
มุมมอง 42014 วันที่ผ่านมา
Welcome to another episode of Swift Academy! This time, we're joined by Bogdan Poplauschi, an expert in iOS development, to tackle one of the most challenging aspects of software engineering-working effectively with legacy code. Together, we delve into the complexities of managing and improving older codebases, while maintaining their functionality and integrity. What You’ll Learn: ➔ Understand...
Unpacking Swift API Macros with Daniel Steinberg
มุมมอง 338หลายเดือนก่อน
In this exciting episode, we sit down with Daniel Steinberg-a seasoned Swift developer, educator, and author-to explore the powerful new Swift API Macros. If you're looking to sharpen your Swift skills with practical insights and hands-on examples, this episode is a must-watch! About Daniel Steinberg: Daniel is a prolific author with over a dozen books to his name, including bestsellers like Th...
App modularization with Tjeerd In 't Veen
มุมมอง 603หลายเดือนก่อน
Welcome to another episode of Swift Acdemy! In this episode, we're joined by Tjeerd In 't Veen, an expert in mobile application development and modularization. Together, we explore the intricacies of breaking down monolithic mobile apps into modular, maintainable, and scalable components. What You’ll Learn: ➔Understanding Modularization: What does it mean to modularize a mobile ➔app, and why is...
Swift testing - Mastering Network Request Testing in Swift with URLProtocol Stubbing
มุมมอง 93หลายเดือนก่อน
Are you looking to improve your network request testing in Swift? In this video, we'll dive deep into using URLProtocol stubbing, a powerful and Apple-recommended technique for intercepting and handling network requests in your iOS apps. What You'll Learn: ➔Understanding URL Loading System: Get an overview of how the URL Loading System works in Swift and why it’s crucial for handling network re...
Mastering Swift Testing: Using Tags to Test a User Service
มุมมอง 692 หลายเดือนก่อน
Welcome to our Swift Testing series! In this channel, we dive deep into the latest Swift testing framework, providing you with practical tips, tutorials, and best practices to elevate your testing skills. In our latest episode, we focus on the power of tags within the Swift testing framework. Tags offer an efficient way to organize and manage your test cases, ensuring that your testing process ...
Swift Testing - first moves with the new framework
มุมมอง 1092 หลายเดือนก่อน
Welcome to the first episode of our series on the new Swift testing framework! In this video, we'll explore the exciting benefits of using Swift testing in your tests, comparing them with the traditional XCTest framework. We'll dive into a practical example, demonstrating how to set up a test case using Swift testing. Learn about the @Test annotation and the powerful #expect macro to streamline...
Mastering TDD in Large-Scale iOS Projects with Jon Reid: Practical Insights and Hands-On Demos
มุมมอง 3332 หลายเดือนก่อน
In this episode of the Swift Academy podcast, we have the pleasure of hosting Jon Reid, renowned author of "iOS Unit Testing by Example" and an expert in test-driven development (TDD) for iOS. Jon brings his extensive experience to the table as we delve into the intricacies of applying TDD techniques to large-scale iOS projects. Join us as we explore: Real-World Application: Practical advice on...
The Clean Mobile Architecture by Petros Efthymiou
มุมมอง 2782 หลายเดือนก่อน
The Clean Mobile Architecture by Petros Efthymiou
Antoine's favorite development tool
มุมมอง 4593 หลายเดือนก่อน
Antoine's favorite development tool
Creating content around iOS: how to get started With Vincent Pradeilles
มุมมอง 2344 หลายเดือนก่อน
Creating content around iOS: how to get started With Vincent Pradeilles
Perspectives féminines: naviguer dans le monde du développement iOS
มุมมอง 1555 หลายเดือนก่อน
Perspectives féminines: naviguer dans le monde du développement iOS
SwiftUI sur macOS, c'est presque mature avec Frank Lefebvre
มุมมอง 1806 หลายเดือนก่อน
SwiftUI sur macOS, c'est presque mature avec Frank Lefebvre
Voyage entre le produit, le design système et les architectures mobiles avec Jérôme Alves
มุมมอง 3087 หลายเดือนก่อน
Voyage entre le produit, le design système et les architectures mobiles avec Jérôme Alves
Git sous Xcode - rebase interactif
มุมมอง 287 หลายเดือนก่อน
Git sous Xcode - rebase interactif
Git sous Xcode - Technique de rebasing
มุมมอง 378 หลายเดือนก่อน
Git sous Xcode - Technique de rebasing
Git sous Xcode - merge des branches et gestion des conflits
มุมมอง 578 หลายเดือนก่อน
Git sous Xcode - merge des branches et gestion des conflits
Git sous Xcode - Créer une branche et faire son premier commit
มุมมอง 478 หลายเดือนก่อน
Git sous Xcode - Créer une branche et faire son premier commit
Git sous Xcode - Initialization d'un reportage git sous Xcode
มุมมอง 128 หลายเดือนก่อน
Git sous Xcode - Initialization d'un reportage git sous Xcode
Git sous Xcode - Les commandes de bases
มุมมอง 268 หลายเดือนก่อน
Git sous Xcode - Les commandes de bases
Git sous Xcode - Introduction à Git
มุมมอง 608 หลายเดือนก่อน
Git sous Xcode - Introduction à Git
Swift Academy - share() opérateur en Combine et RxSwift
มุมมอง 628 หลายเดือนก่อน
Swift Academy - share() opérateur en Combine et RxSwift
Swift Academy - Créer ses propres opérateurs avec Combine et RxSwift
มุมมอง 638 หลายเดือนก่อน
Swift Academy - Créer ses propres opérateurs avec Combine et RxSwift
Swift Academy - 🚀 Découvrez la toute nouvelle API de décodage sous RxSwift ! 🚀
มุมมอง 658 หลายเดือนก่อน
Swift Academy - 🚀 Découvrez la toute nouvelle API de décodage sous RxSwift ! 🚀
Swift Academy - Transformez URLSession en RxSwift : Appel d'API avec Élégance et Réactivité
มุมมอง 1369 หลายเดือนก่อน
Swift Academy - Transformez URLSession en RxSwift : Appel d'API avec Élégance et Réactivité
Swift Academy - Créer un EDSL avec Result Builder en Swift pour la Gestion NSAttributedString(3)
มุมมอง 419 หลายเดือนก่อน
Swift Academy - Créer un EDSL avec Result Builder en Swift pour la Gestion NSAttributedString(3)
Swift Academy - Créer un EDSL avec Result Builder en Swift pour la Gestion NSAttributedString(2)
มุมมอง 289 หลายเดือนก่อน
Swift Academy - Créer un EDSL avec Result Builder en Swift pour la Gestion NSAttributedString(2)
Swift Academy - Créer un domain specific language avec Result Builder (partie 1)
มุมมอง 5310 หลายเดือนก่อน
Swift Academy - Créer un domain specific language avec Result Builder (partie 1)
Swift Academy - Dynamic Member Lockup et protocole générique
มุมมอง 6010 หลายเดือนก่อน
Swift Academy - Dynamic Member Lockup et protocole générique
Swift Academy - Polymorphisme et généricité - Opaque type
มุมมอง 5211 หลายเดือนก่อน
Swift Academy - Polymorphisme et généricité - Opaque type

ความคิดเห็น

  • @nihelbencheikh
    @nihelbencheikh หลายเดือนก่อน

    bravo et bonne continuation monsieur

  • @SwiftWithWalid
    @SwiftWithWalid 4 หลายเดือนก่อน

    salut

  • @SwiftWithWalid
    @SwiftWithWalid 4 หลายเดือนก่อน

    Yahya il a 40 ans

  • @futuringenieurtech8088
    @futuringenieurtech8088 7 หลายเดือนก่อน

    bonne explication. merci bien

  • @souhaibbenghrib2103
    @souhaibbenghrib2103 11 หลายเดือนก่อน

    Bravo pour le premier pas

  • @rev_kous9275
    @rev_kous9275 ปีที่แล้ว

    Walid, petite remarque, pour tes prochaines vidéos, essaie s'il te plaît de corriger le problème avec ton micro, car on entend pas hyper bien, là c'est plus d'une oreille au lieu des 2 (avec le casque/écouteurs), et donc le son n'est pas au top pour bien écouter, merci à toi.

    • @SwiftWithWalid
      @SwiftWithWalid ปีที่แล้ว

      merci on vérifiera le son

    • @SwiftWithWalid
      @SwiftWithWalid ปีที่แล้ว

      j'espère que vous entendez à minima clairement sans écouteurs? Nous avons détecté le problème et nous corrigerons dans la prochaine vidéo. N'hésitez pas svp à nous remonter si vous avez d'autres problèmes ou des suggestions d'améliorations. 😀

    • @rev_kous9275
      @rev_kous9275 ปีที่แล้ว

      @@SwiftWithWalid Oui, mais il faut que je monte presque le son à fond.

  • @araguide2337
    @araguide2337 ปีที่แล้ว

    svp les solutions des séries TDs

    • @SwiftWithWalid
      @SwiftWithWalid 9 หลายเดือนก่อน

      Désolé on n’a pas de solution écrite malheureusement.

  • @tahabouchoucha1140
    @tahabouchoucha1140 ปีที่แล้ว

    e25 nrmlmnt (2,5,4) ؟؟

  • @heroine8971
    @heroine8971 2 ปีที่แล้ว

    Merci

  • @naouelaoures7218
    @naouelaoures7218 2 ปีที่แล้ว

    Bonsoir monsieur, est ce que vous pouvez m'envoyer le code source en java?

  • @samrad6508
    @samrad6508 2 ปีที่แล้ว

    why you stopped uploading?

    • @SwiftWithWalid
      @SwiftWithWalid 2 ปีที่แล้ว

      Hello Sam but I’m very occupied with other IT topics and I didn’t find time to continue on distributed systems otherwise you can find courses

  • @Issambejja
    @Issambejja 2 ปีที่แล้ว

    c'est quoi la section critique s'il te plait ?

    • @SwiftWithWalid
      @SwiftWithWalid 2 ปีที่แล้ว

      Ça constitue les variables ou les fonctions, les objets, les threads, les fichiers… qui peuvent être consumé ou appelé par des clients ( threads, objet, programmes) en même temps alors c’est critique normalement d’où cette appellation

    • @Issambejja
      @Issambejja 2 ปีที่แล้ว

      thank u brother carry on !!

  • @jamesdoukaga
    @jamesdoukaga 3 ปีที่แล้ว

    Bonjour, j'aimerais savoir, quel pourrait être l'utilité de ce système dans un réseau maillé LoRaWAN ? Merci !

  • @nawalninouh9721
    @nawalninouh9721 3 ปีที่แล้ว

    Merci

  • @omaratallah4689
    @omaratallah4689 3 ปีที่แล้ว

    quel est la diference entre l’algorithme de Lamport et l’algorithme de de Ricart et Agrawala

  • @chymjg5582
    @chymjg5582 3 ปีที่แล้ว

    Merci à vous <3

  • @elidrissioussama3264
    @elidrissioussama3264 3 ปีที่แล้ว

    est ce que vous pouvez partage les exercices

  • @foudilbenouci482
    @foudilbenouci482 3 ปีที่แล้ว

    je ne comprends rien à l'ordre d'exécution des instructions

    • @sebastianrebiere9017
      @sebastianrebiere9017 3 ปีที่แล้ว

      Alors tout d'abord c'est le père qui commence à imprimer son message de pids. Ensuite il attend patiemment l'exécution de son fils. Le fils lui imprime son message de pid. Ensuite il imprime ses randoms avec la fonction "work" qu'il a créé. Après le fils return 0 (càd qu'il a fini son exécution). C'est de retour le tour du père. Maintenant il exécute ses rands à lui avec la fonction "work". Enfin le père return 0 pour finir son processus à lui. Et du coup tout est fini.

    • @foudilbenouci482
      @foudilbenouci482 3 ปีที่แล้ว

      @@sebastianrebiere9017 je ne vois pas de boucle sur le switch

    • @sebastianrebiere9017
      @sebastianrebiere9017 3 ปีที่แล้ว

      @@foudilbenouci482 comment ça une boucle ? S'il s'agit de passer de l'enfant au père, c'est le fork qui s'en occupe en fait. Le fork renvoit un 0 si on est chez l'enfant et renvoit le pid de l'enfant si on est chez le père. Le switch s'active pour tout les processus à partir du fork. En gros le père a la priorité lorsqu'il commence à partir du fork, et ensuite vient le tour du fils si jamais il y a un wait ou si le père a fini. S'il s'agit de la répétition des rands ça c'est dû à la fonction work. Le fork fonctionne comme une sorte de diviseur de processus, c'est pas qu'il y a une boucle, mais plutôt on divise les processus et on fait la suite le nombre de fois divisé. Exemple : fork(); printf("Bla "); return 0; ce qu'il se passe c'est que d'abord le père imprime bla et ensuite c'est le tour du fils d'imprimer bla.

  • @brahimlahici480
    @brahimlahici480 3 ปีที่แล้ว

    Merci ,c'est un cour trés riche d'information avec un facilité de compréhension.

  • @informaticsisland9945
    @informaticsisland9945 3 ปีที่แล้ว

    merci

  • @ahlamgz8953
    @ahlamgz8953 3 ปีที่แล้ว

    Merci , svp comment on dater les événements avec l'horloge matricielle

  • @ahlamgz8953
    @ahlamgz8953 3 ปีที่แล้ว

    Merci , svp comment on dater les événements avec l'horloge matricielle

  • @samihaboutaleb81
    @samihaboutaleb81 3 ปีที่แล้ว

    Erreur au niveau du site 3: e31 est un evenement de reception, il vaut la valeur 3(max(0,2)+1)

    • @SwiftWithWalid
      @SwiftWithWalid 3 ปีที่แล้ว

      E31 est un événement d’émission le sens est de e31 vers e22 alors e31 sera égal à 1

    • @samihaboutaleb81
      @samihaboutaleb81 3 ปีที่แล้ว

      @@SwiftWithWalid oh ok. Thank you

  • @imadhaf
    @imadhaf 3 ปีที่แล้ว

    merci ^_^

  • @abderrahmaneamira9167
    @abderrahmaneamira9167 3 ปีที่แล้ว

    merci c'est trés bien expliquée

  • @souamesimen4172
    @souamesimen4172 3 ปีที่แล้ว

    Merci beaucoup

  • @fatmabenrejeb3979
    @fatmabenrejeb3979 3 ปีที่แล้ว

    Bonjour, pourquoi on fait sem_wait avant printf et non pas après

  • @stephanengala1145
    @stephanengala1145 3 ปีที่แล้ว

    très bonne explication, merci prof Sassi Walid, un résumé simple et net

  • @aminatadji386
    @aminatadji386 3 ปีที่แล้ว

    Merci

  • @abdobell
    @abdobell 3 ปีที่แล้ว

    Merci beaucoup pour l'explication On attendons la suite svp

  • @digii3094
    @digii3094 3 ปีที่แล้ว

    et la suite svp :'(

  • @andrekonga8388
    @andrekonga8388 4 ปีที่แล้ว

    MERCI

  • @andrekonga8388
    @andrekonga8388 4 ปีที่แล้ว

    Merci cette vidéo m'a été très utile

  • @salahboucetta77
    @salahboucetta77 4 ปีที่แล้ว

    Comment trouver l'ordre total du systeme par cette methode? H.vectorielle

    • @SwiftWithWalid
      @SwiftWithWalid 4 ปีที่แล้ว

      hadia boucetta cette méthode aussi ne permet pas d’avoir un ordre total exacte mais permet à chaque noeud de se situer ses événements par rapport aux autres qui ont échangé avec lui

  • @dianelaureghomsi1222
    @dianelaureghomsi1222 4 ปีที่แล้ว

    bonjour s'il vous plais j'aimerai avoir un lien de telechargement

  • @DantalionNl
    @DantalionNl 4 ปีที่แล้ว

    Having an english title and a french video is quite misleading.

    • @SwiftWithWalid
      @SwiftWithWalid 4 ปีที่แล้ว

      Dantali0n thank you but very soon I will add English content

  • @mamecheikhdiop2741
    @mamecheikhdiop2741 4 ปีที่แล้ว

    Pour le -1 on doit retourner -1 non ?

  • @abderahimmazouz2088
    @abderahimmazouz2088 4 ปีที่แล้ว

    que represente la somme des elements d'un vecteur "horloge" ?

    • @SwiftWithWalid
      @SwiftWithWalid 4 ปีที่แล้ว

      ça représente le nombre d'événements total perçu par un site à un moment donnée

    • @abderahimmazouz2088
      @abderahimmazouz2088 4 ปีที่แล้ว

      @@SwiftWithWalid merci beaucoup

  • @sarahaoufi7623
    @sarahaoufi7623 5 ปีที่แล้ว

    Thank you sir! That was so useful! I think you didn't answer the first question yet!

    • @ibraamine7906
      @ibraamine7906 5 ปีที่แล้ว

      here is the link of the first part th-cam.com/video/TYm5JKn7Q-M/w-d-xo.html

  • @sorane8910
    @sorane8910 5 ปีที่แล้ว

    Merci pour cette vidéo, même si j'ai beaucoup de mal en java, sache que ta vidéo m'a bien aidé, j’espère réussir mon examen de programmation. un gros merci de la part d'un Belge.

  • @codingcampfree
    @codingcampfree 5 ปีที่แล้ว

    salem....mon prof de cours utilise P() et V() (UP et DOWN) au niveau de semaphore meme contexte de sem_wait() et sem_post() ....mais la question ici quelle est la difference entre le mutexe et semaphore ? et est ce que possible d'utiliser sem_wait et sem_post de mon examain final ?

  • @pierreabena357
    @pierreabena357 5 ปีที่แล้ว

    Merci , c'clair comme de l'eau de roche

  • @pierreabena357
    @pierreabena357 5 ปีที่แล้ว

    Merci à toi

  • @LaboTips
    @LaboTips 5 ปีที่แล้ว

    Un bon vidéo , mais je pense que vous avez fait une erreur quant vous disiez que c'est le thread 2 qui exécute de 11 à 200. Je pense pas que c'est le cas parce que le thread 1 après avoir exécuter de 1 à 10 on le retire la main c'est le thread 2 qui prend qui exécute de 11 à x () pendant ce temps quant le thread 1 est élu il continue son exécution de x+1 à y ainsi de suite (il ne vas pas affiché le printf qui est en haut il va continue la boucle donc il est mieux de mettre le printf à l’intérieur de la boucle ça serai plus visuel de voir l’exécution des threads).

  • @TexCormCity
    @TexCormCity 5 ปีที่แล้ว

    superbe video Walid mais vous auriez eu les incrémentations du compteur bien affichées si vous aviez mis au lieu de \t ==> printf("%d ", cmpt); Merci!

  • @manassematondo6172
    @manassematondo6172 5 ปีที่แล้ว

    FICHIER PDF MERCI POUR LE COURS MAIS JE N'ARRIVE PAS A BIEN VOIR CQR LES ECRITURES SONT MINIATURES

  • @eNONO-ot4zh
    @eNONO-ot4zh 5 ปีที่แล้ว

    Vidéo bien faite et très courte. 👍 On attend la suite j'espère

  • @lafdalmohamed2841
    @lafdalmohamed2841 5 ปีที่แล้ว

    Merci monsieur, très claire et bien explique

  • @faridaitouakli3791
    @faridaitouakli3791 5 ปีที่แล้ว

    Rabi yehfdek

  • @takouahidaya4890
    @takouahidaya4890 6 ปีที่แล้ว

    mrc pour explication mais ou est les autre video