Тёмный

Why You Should Think About SOFTWARE ARCHITECTURE in Python 💡 

ArjanCodes
Подписаться 250 тыс.
Просмотров 71 тыс.
50% 1

Опубликовано:

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 131   
@ArjanCodes
@ArjanCodes 3 года назад
If you're wondering: the quote on the letterboard is from Goethe. I'm still trying to figure out how it applies to software architecture, which seems to be closer to frozen yoghurt than frozen music.
@stoneworld7556
@stoneworld7556 Год назад
I read it in context of the Disney movie, "software architecture is Frozen music... Let it go, Let it Go Can't hold it back anymore"
@gregor9811
@gregor9811 Год назад
When I saw that quote, I was thinking of the famous misattributed quip "Writing about music is like dancing about architecture". Both Frank Zappa and Elvis Costello have been credited with this line, concerning music criticism apparently, but both have indicated that they never said it...
@michaelmichelotti460
@michaelmichelotti460 3 года назад
Awesome video! I started Python around 6 months ago and have just recently started building larger projects. I realized immediately that software architecture was an entirely different skillset from the algorithm-centric coding problems most people think of when they think of learning to code. I think I actually find architecture the hardest part of SW dev. Love content like this that helps to understand it!
@brianhacker7346
@brianhacker7346 3 года назад
Model View Controller is the architecture pattern that I first learned years ago and I still use most in my work. Watching you explain it though, I did learn how to easily integrate the strategy pattern and the value in doing that. I just wanted to point out that you created the Model, but didn't have it do anything. I do recognize that this was a simple example. But, in this case, your controller class knows too much about the model's implementation and even dominates it. This was most apparent when you cleared the list of IDs, the controller did 'self.model.uuid = [] ', where you may have left it to the model to do this by issuing 'self.model.clearList' and let the model decide how best to clear the list. Still, this was a great walk through to demonstrate the value of good architecture.
@ArjanCodes
@ArjanCodes 3 года назад
Hi Brian - thank you and you’re absolutely right. The model in this example is nothing more than a global variable in fact. Normally, you’d have something more complicated like a database. And then, the model would get the same treatment as the view: add methods for the various operations, and use an abstract class to separate the model from the controller.
@brianhacker7346
@brianhacker7346 3 года назад
@@ArjanCodes I noticed the additional functionality you added to the Model class in Github. Thanks! I bought you a cup of coffee.
@PawelOlas
@PawelOlas 3 года назад
this is one of the best examples to introduce people to model-view-controller I have ever seen online. Love your videos.
@ArjanCodes
@ArjanCodes 3 года назад
Thank you! Glad you’re enjoying the videos!
@cryp0g00n4
@cryp0g00n4 2 года назад
It really is. I watched a few videos and it was like a cat scratching a blackboard. Either it took a long time for me refresh myself on it or this was explained well. I would like to say its the latter and not the former :).
@הודגמרסני-ת5ל
@הודגמרסני-ת5ל 2 года назад
quick fix: The Best**
@calebmcarthur7861
@calebmcarthur7861 3 года назад
Fridays are even better now that I found this channel!
@ArjanCodes
@ArjanCodes 3 года назад
Thanks Caleb! :)
@anelm.5127
@anelm.5127 3 года назад
Please do more software architecture videos. Your design pattern videos are amazing but the architecture bread and butter is what I need in my life 😄
@coldhardwick
@coldhardwick 3 года назад
I know the youtube algorithm loves
@ArjanCodes
@ArjanCodes 3 года назад
Thank you very much! Yeah, the algorithm definitely favors shorter videos, which is not always best for explaining software design topics.
@coldhardwick
@coldhardwick 3 года назад
@@ArjanCodes by the way, I've read and still have the text you often reference: Design Patterns. After reading it, I refactored a great deal of my code to align with the design principles outlined in the book. And then you came along and started talking about the book and showing some examples in python. So I am now refactoring once again to make things easier and easier to reuse. What's nice about all this is when I need to write something new, I already have an extensive framework because of Design Patterns coupled with your explanations and examples. Cheers mate! Keep up the good work.
@MrWadood007
@MrWadood007 3 года назад
Great video! I admire detailed description boxes a lot, this looks like a sign of a channel which will blow up soon.
@ArjanCodes
@ArjanCodes 3 года назад
Happy you liked it! I’ll make sure to keep filling up the descriptions, hope it helps, haha 😊.
@ravenecho2410
@ravenecho2410 2 месяца назад
Can u go over how to integrate languages, theres like communication over local host, theres communication over port(?), and theres like foreign function interfaces I think i got (2) wrong, but say i write some part of my arch in rust, its a much better version than my bash library and much more efficient and safe engine feom python, but now i want to use intigrate it within python bc there are no SDKs for rust... what do i do? Do i just write a couple of modules to wrap the Curl interface? If the server sends me down classes (what i would presume is the like modus opperandi for sdks) and a non native json seriable type(s)... do i just implement those or extract data? Do i have to port every type they send me, and port every interface and string reprentable non-primitive object i have to send back???
@stephanieelisagonzalezried950
@stephanieelisagonzalezried950 6 месяцев назад
Love your videos Arjan! I am currently using a MVC architecture to build a desktop application using Python for the model and controller, and PyQT for the view. I am struggling to scale up the MVC architecture as the application becomes increasingly complicated. All of the separate layers are becoming very large. The model has been broken into many different subclasses, but the controller and view are still one class each. I am struggling to figure out how to break down the controller and view layer so that I can scale up my application better. Have you thought of doing a part 2 of this video where you show what happens once your application becomes more complicated?
@qwertyuiopsdfgh
@qwertyuiopsdfgh 2 года назад
Why make the abstract View class? Will there be another GUI framework for the future that would necessitate adding a class such as PyQTView, for example?
@TheMouseair
@TheMouseair Год назад
thanks for this tutorial, very helpful to me :) one thing I would like to ask is at the end final thoughts, you mentioned you are not a big fun of MVC, because at the end, user always wanna something out of the box. I totally agree with this, but any suggestion to choose some framework that can manage this situation?
@pydocs-pro
@pydocs-pro 2 года назад
What is the best software architecture for data science applications, thinking that they must have the sequential steps: collect data, preprocess it, train model, make predictions and save the results?
@chriswunder5420
@chriswunder5420 Год назад
thanks for the great video! I'm suprised at how good tkinter buttons look on a mac, without any modifications.
@imadetheuniverse4fun
@imadetheuniverse4fun 2 года назад
Would it be fair to say that there is a very tight coupling between the Controller and Model and the Controller and View, but that's okay because it's intentional and well defined in a single place?
@הודגמרסני-ת5ל
@הודגמרסני-ת5ל 2 года назад
this video was amazing for me, like your videos in general. just thank you!
@hcubill
@hcubill 23 дня назад
Awesome Arjan what books do you recommend to read more about mvc in python?
@michaelsmith7739
@michaelsmith7739 3 года назад
Discovered your channel a few weeks ago. Great stuff! Keep it up. Groetjes uit België beste Noorderbuur!
@ArjanCodes
@ArjanCodes 3 года назад
Hi Michael, dankjewel! Happy you’re enjoying the videos.
@joshuamcdonald5850
@joshuamcdonald5850 3 года назад
for real this channel is going to hit 100k in like 4 months
@ArjanCodes
@ArjanCodes 3 года назад
Let's see, not making any predictions for the moment! :)
@fashionvella730
@fashionvella730 2 года назад
i think its good if we place the uuid adding and removing function in model class i want to say according to information expert uuid related function have to be in the model class or the main thing it is very tight coupled
@gianniskiriakou6219
@gianniskiriakou6219 2 года назад
Is it possible to have multiple controllers in an app using the model view controller pattern?
@cod-newbie9166
@cod-newbie9166 2 года назад
How do I start implementing these in my projects?
@abdelrhmanahmed1378
@abdelrhmanahmed1378 3 года назад
thank you for your great content ,can you make video about django ARCHITECTURE
@ArjanCodes
@ArjanCodes 3 года назад
Thank you for the suggestion!
@Tekay37
@Tekay37 2 года назад
I have an issue with the term "Architecture" in this context. When I think about architecture, I think about more of a big picture perspective, like uncle bobs "Clean Architecture" that's oriented around Boundaries and Dependencies across boundaries. So intuitively I'd see MVC closer to a design pattern or a meta design pattern if you will, because you could see the Controller as a Facade for more complicated logic where a model holds some data and the view determines how to display the model data on a screen. 🤔
@ArjanCodes
@ArjanCodes 2 года назад
I get that, though MVC is clearly noted as an architectural pattern in the industry. The idea is that MVC provides the overall structure of your GUI application and then you use design patterns within that structure. For example, in the model you might use composition to structure the data, in the view you might use the observer pattern to handle UI changes, and in the controller you might use patterns like the strategy to change the logic dynamically.
@Antuan2911
@Antuan2911 2 года назад
Very good example! Thank you!
@djl3009
@djl3009 3 года назад
Thank you! I enjoyed both the video and playing around with the code. I recently came across your channel and have been enjoying it immensely! For a future video on this architectural pattern, how about adding another alternate version that uses the Observer pattern for Model->View updates. If I remember correctly that is what Martin Fowler refers to as "Observer Synchronisation" in an MVC architecture. In your example you've implemented what he calls "Flow Synchronisation" where the Controller directly updates both the View and the Model directly as part of the input processing flow. With Observer Synchronisation the Controller updates the Model, and the Model notifies one or more Views via an implementation of the Observer pattern.
@blkdima
@blkdima 2 года назад
What is shown in the video looks more like an MVP pattern to me. I have seen many different explanations about the MVC and MVP patterns. Some explain the MVC pattern in the same way as in the video, while others explain the way you explained.
@StanislavGrebenyukov
@StanislavGrebenyukov 2 года назад
Thanks for your big job. I watched all of your videos. It's awsome.
@ArjanCodes
@ArjanCodes 2 года назад
Glad you like them!
@Vijay-Yarramsetty
@Vijay-Yarramsetty 2 года назад
Found another great channel. Kudos.
@FlaviusAspra
@FlaviusAspra 3 года назад
I'll leave here the feedback I gave you on reddit with the hope that it benefits other viewers not funneled through reddit: I think you did a great job at explaining in simple terms what things are and where they are positioned. However, here some additional input: - in the same bucket as design patterns you should also put anti-patterns; we as an industry talk too little about them - on top of patterns and antipatterns come design principles; we as an industry talk too much about SOLID, but in reality there are over 20 of them. In the same bucket also go anti-principles; we also don't talk enough about them - regarding frameworks: if you let your framework dictate how to do your architecture, you're doing something terribly wrong. I'm afraid elaborating on this would take me too much effort for this post, but you can read between the lines about this on my wiki; if you have concrete questions, please ask - MVC is not an architecture if you really want to do it right. At most, it's a design decision you can have in your Web plugin (think adapter and ports, where a delivery mechanism, here the web, is Plugin) - your example, while showing good design, is too simplistic to explain anything about architecture - examples of architectures: layered, n-tier, ports and adapters; please note that they can be combined in very harmonious ways - above architecture you have architectural principles and anti-principles like: single source of truth, microservices, etc; and no, specific vendors are not architectures, like: using aws is not an architectural decision, it's simply a tooling decision This last point highlights how design and architecture go hand in hand: you have single source of truth at the system level/architecture, but you need to follow through with this also at the design level, for example by making sure that only one object has setters and getters for particular pieces of information, and all other objects delegate to this single source of truth the write and read operations. So all in all, architecture and design go hand in hand.
@ArjanCodes
@ArjanCodes 3 года назад
Thank you Flavius, much appreciated. For completeness, this is the link to the original Reddit post: www.reddit.com/r/softwarearchitecture/comments/ms29z8/what_is_software_architecture_and_how_is_it/?
@pani3610
@pani3610 2 года назад
why isn't lisvariable and textvariable used? wouldn't it make managing values of widgets better?
@pani3610
@pani3610 2 года назад
*listvariable
@malgindesilva2758
@malgindesilva2758 2 года назад
Bro, do you have a paypal option. I can't put my card details. I really love your teaching this video. Thanks
@ArjanCodes
@ArjanCodes 2 года назад
Unfortunately, no. But thank you anyway for trying!
@enricoroselino7557
@enricoroselino7557 Год назад
so how do you get that darkmode tkinter ?
@FurquimRafa
@FurquimRafa Год назад
Best example I could find about a MVC using python for desktop application. Thanks!
@HasaniSaeed
@HasaniSaeed Год назад
Your playlist is one of the best videos about software design . Thanks
@ArjanCodes
@ArjanCodes Год назад
Thank you!
@judegomolina
@judegomolina Год назад
At my current job we use Hexagonal Architecture with Kotlin and Spring, which regardless of being MVC by default has the flexibility to allow clean architectures. I have found hexagonal to be a more convenient than MVC since it allows you to isolate your coro domain modeling and business rules isolated from external stuff such as the framework, the persistency library and so on. However it is worth noting that such a win in terms of maintainbility and low coupling is paid with some additional complexity in the project structure, therefore I would say that it should be assessed whether or not such a pattern is required for a specific project.
@terguunzoregtiin8791
@terguunzoregtiin8791 3 года назад
Thanks for your great video. I think I'll keep watching your tutorial every time you updates. By the way, could you choose some well written code bases and explain some practical uses of design patterns or architectures in that code base like requests or flask ?
@ArjanCodes
@ArjanCodes 3 года назад
Thanks for the suggestion! I'll definitely think about doing a video about backend API building and/or http requests.
@FineAndAndy
@FineAndAndy 3 года назад
What's the right way for the view to get information from the model? In this example, the model contained very little structure, and the view maintained a duplicate of the entire list of uuids, but I imagine that it's not generally the goal to have the view class duplicate the model like this. As an example, suppose I'm coding a checkers game (or something similar). Presumably the model class is the right place for a list of which board spots should have which color checker in them (or be empty). But the view needs this information when it comes time to draw. Would you have the view class maintain a duplicate list of this information? Would you pass the model to the View.setup() function so the view can access the model's information when needed? Would you create a method in the controller so that the view can access the model, but only by going through the controller? Something else?
@david-pe5qi
@david-pe5qi 3 года назад
Great video as always, greetings from chile :D
@ArjanCodes
@ArjanCodes 3 года назад
Thank you very much, David!
@הודגמרסני-ת5ל
@הודגמרסני-ת5ל 2 года назад
your videos are diamonds
@zdzichuWentyl
@zdzichuWentyl 3 года назад
As always great job i love yours approaches to share your knowledge It would be great working with you
@kitgary
@kitgary 2 года назад
It is useful. It is quite surprised that many software engineers don't care about software architecture in production code.
@ComputerScienceSimplified
@ComputerScienceSimplified 3 года назад
Awesome video, keep up the incredible work! :)
@ArjanCodes
@ArjanCodes 3 года назад
Thank you! Good luck also to you with your channel, very well done and interesting topics.
@EW-mb1ih
@EW-mb1ih 2 года назад
Nice videos. I especially like the "Analysis of the new code" part where you link architecture, design pattern and synthax structure. One question to be more general: how would you link, architecture, principle, design pattern and maybe other low level part?
@DrSpooglemon
@DrSpooglemon 3 года назад
The model class is redundant. Why not just use the list directly as the model?
@ArjanCodes
@ArjanCodes 3 года назад
Because the idea is that ultimately, the Model class will provide an abstraction to the data. In this simple example it doesn’t make a difference, but generally you’ll have a way more complicated model and then it’s important to make this separation.
@ramirotell
@ramirotell 2 года назад
Enjoying each of this video series. Can you do more videos about this topic? thanks!
@Evkayne
@Evkayne 2 года назад
I wish I came to know about your channel earlier sir!
@ArjanCodes
@ArjanCodes 2 года назад
Glad you found me anyway :).
@microdevelopers
@microdevelopers 2 года назад
Thank you so much sir. I learnt alot of advance stuffs from your videos.
@bckzilla
@bckzilla Год назад
Very inspirational. Thanks!
@ArjanCodes
@ArjanCodes Год назад
Thanks so much, glad you liked it!
@sebastianrodriguezcolina634
@sebastianrodriguezcolina634 3 года назад
I would love to see a video on Hexagonal Architecture or Clean Architecture. I try to follow it while writing backend services, but your videos always make me realize something knew :)
@victorh.torres2713
@victorh.torres2713 3 года назад
Hi Arjan. Again, thanks for your explanation. What do you think about this possible change in your example code? The TKView class has a usage relationship with the Controller class by the setup method. Maybe the Controller class implements a abstract class, for example the 'Click' class, with the two abstract methods that need TKView to enroll in the framework buttons. Now TKView receive a 'controller: Click' and the view don't have a relation with the controller implementation. The idea is similar when you separated the TKView with the Controller. Best regards!
@ArjanCodes
@ArjanCodes 3 года назад
Good suggestion, I think you certainly further improve separation by making Game less dependent on the view, so you can later on decide to switch out Tkinter with something else and don’t have to change anything in the rest of the game code.
@1oglop1
@1oglop1 3 года назад
This was a really great video! Finally showing the architecture in practice!
@sagiziv927
@sagiziv927 2 года назад
Great video, but I am not sure about the View class. As far as I know it shouldn't know about the controller at all. In your code, the view is dependent on the controller and vice-versa, and therefore you wouldn't be able to separate those classes to separate files because you would have cyclic references. You even encountered it in the video at 11:27, where you had to move the View class above the Controller class so the type-hint would compile, but you can't add a type hint in the View. I think that the View should receive the functions (or, as someone else suggested here, an abstract class with these functions). Anyway, great video I really love your content 😊🤓👨🏻‍💻
@ArjanCodes
@ArjanCodes 2 года назад
Good point! It would indeed be better if the view has no knowledge of the controller. I might revisit this in a future video.
@robertbrummayer4908
@robertbrummayer4908 3 года назад
Hi Arjan, thank you for this great video. I have two comments: 1) In the Model, "uuids" would be a better name since multiple ids are stored. 2) From my point of view, what you showed as strategy pattern is a very basic form of it at best. I am not sure if I would call it "strategy pattern" here. As you know, in the strategy pattern, typically an (abstract) class is used with (abstract) methods where sub classes provide the respctive behavior. I would rather say what you do is constructor-based dependency injection to make the uuid function configurable. But that's just my two cents :)
@beezow7113
@beezow7113 Год назад
Often times creating an entire strategy object is unnecessary in languages with first class functions. Especially if you can type safe it with the correct parameters and everything. This is certainly strategy pattern python just simply makes it easier to implement. Also iirc strategy pattern shouldn't have multiple methods, usually the wrapper is just to pass it for constructor injection. If you add multiple strategies in a single class its gonna just start bleeding into other patterns like repository etc.
@sasucarefree4694
@sasucarefree4694 3 года назад
Why is the controller less dependent on TkView after using the abstract class? You have been using the abstract class in several videos but I can't grasp the benefits yet. Could you elaborate on it a bit more?
@ArjanCodes
@ArjanCodes 3 года назад
The abstract class acts like a separation layer between the different parts of the architecture. If you make the controller dependent on an abstract class instead of TkView directly, you could replace the view by another type of view (for example, QtView) without having to change anything in the controller. So in essence, if you do this in different areas of your code, it will be less work later on to change it.
@chromosome24
@chromosome24 2 года назад
I use the spaghetti architecture.
@ArjanCodes
@ArjanCodes 2 года назад
It's the best architecture ever. Especially combined with the "pesto" architectural layer.
@MrCucolea
@MrCucolea 3 года назад
Good content to broaden your view on software design. It would be nice if you could compare the architecture of popular python web frameworks(Flask, Django, FastAPI) with pros, cons and potential use cases.
@ArjanCodes
@ArjanCodes 3 года назад
Glad you liked it Robert, and thank you for the suggestion!
@senthilkumarpalanisamy365
@senthilkumarpalanisamy365 3 года назад
Excellent sir, thanks for posting. Content is simply precise and perfect. Please post more.
@ArjanCodes
@ArjanCodes 3 года назад
Thanks so much, will do!
@roddydykes7053
@roddydykes7053 2 года назад
This is a great way to have the video, show all the code be written in real time (sped up but not too fast), with a small box with you talking in it.
@ArjanCodes
@ArjanCodes 2 года назад
Thanks so much Roddy, glad you liked it!
@andreas3682
@andreas3682 3 года назад
Thanks for the great content! In case you're not familiar with Ctrl+D (selecting current and with each hit of "D" the next occurrence) and Ctrl+Shift+L (selecting all occurrences) in vscode yet, i recommend you try those out. It's super helpful when selecting and replacing code. Another nice alternative is F2 (rename variable). :)
@ArjanCodes
@ArjanCodes 3 года назад
Thanks Andreas! I should put in some time to get more familiar with the many shortcut keys in VSCode. The ones you mention are definitely very useful indeed.
@naveenchandpandey7940
@naveenchandpandey7940 3 года назад
I stumbled upon your channel while randomly going through different content and since then i cannot stop watching your videos. Great quality videos with a really nice way of teaching which keeps the video engaging till the very end.
@ArjanCodes
@ArjanCodes 3 года назад
Thank you, happy you like the videos!
@MrWrklez
@MrWrklez 3 года назад
I've been looking for this kind of content for a while. Just subscribed!
@ArjanCodes
@ArjanCodes 3 года назад
Thank you Lester, glad you’re enjoying the content!
@michagolemo3765
@michagolemo3765 3 года назад
great great great stuff
@ArjanCodes
@ArjanCodes 3 года назад
Thanks so much Michal!
@jananiarunachalam5706
@jananiarunachalam5706 2 года назад
Really cool video!
@ArjanCodes
@ArjanCodes 2 года назад
Thank you!
@davidl3383
@davidl3383 Год назад
thank you so much. Learning python is a thing, doing it well is another :)
@ArjanCodes
@ArjanCodes Год назад
Thanks so much David, glad you liked it!
@syspogh1609
@syspogh1609 Год назад
thanks for this
@ArjanCodes
@ArjanCodes Год назад
You're welcome
@sudheendraraobilamkar6938
@sudheendraraobilamkar6938 3 года назад
Simple and nice explanation, I like the way you explained the concepts.
@ArjanCodes
@ArjanCodes 3 года назад
Thank you so much 🙂
@HandcartRule46
@HandcartRule46 2 года назад
Great video 👍
@ArjanCodes
@ArjanCodes 2 года назад
Thanks !
@vitim144
@vitim144 3 года назад
Awesome video! Congratulations.
@ArjanCodes
@ArjanCodes 3 года назад
Thank you Victor!
@pierrette64300
@pierrette64300 3 года назад
Thank you for this video! I have a question, At 5:37, why did you leave the passed controller as is instead of making it an attribute of the View class (self.controller) ?
@ArjanCodes
@ArjanCodes 3 года назад
Setting it as a class attribute is surely also an option. I didn’t do it here because it wasn’t needed for this example (everything is patched up in the setup method).
@pierrette64300
@pierrette64300 3 года назад
​@@ArjanCodes I see! Could you have also used the model and view directly from the __init__ of the Controller instead of making them attributes of the class then?
@yoyonel1808
@yoyonel1808 3 года назад
Very nice video, thx for sharing ! :)
@ArjanCodes
@ArjanCodes 3 года назад
Thank you @yoyonel1808, happy you enjoyed it!
@AnIceCrasher
@AnIceCrasher 3 года назад
Another great video making me aware of more to take into consideration 😅 And it is very awesome, that you explain it with a code example and then also use a design pattern to show the diffrence.
@ArjanCodes
@ArjanCodes 3 года назад
Thanks IceCrasher! The examples require always a bit of preparation, but I agree they are crucial to clarify how everything fits together.
@AnIceCrasher
@AnIceCrasher 3 года назад
@@ArjanCodes Now only a UML class diagramm is missing and then it would be perfekt :)
@stifferdoroskevich1809
@stifferdoroskevich1809 3 года назад
AMAZING! thanks Arjan
@ArjanCodes
@ArjanCodes 3 года назад
Glad you like it!
@aadithyavarma
@aadithyavarma 3 года назад
Great video! Can you do a video on singleton pattern which can be used as a decorator?
@ArjanCodes
@ArjanCodes 3 года назад
Thanks! I actually did this video a while ago, perhaps you find it helpful: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Rm4JP7JfsKY.html.
@aadithyavarma
@aadithyavarma 3 года назад
@@ArjanCodes Great! Love your python videos and I have decided to start from your first video. Will reach here soon :). Amazing content and great production quality videos!
@ArjanCodes
@ArjanCodes 3 года назад
Thank you, glad you like the videos! Let me know what you finally end up with!
@joshuamcdonald5850
@joshuamcdonald5850 3 года назад
Wow, best video yet!
@ArjanCodes
@ArjanCodes 3 года назад
Glad you enjoyed it, Joshua!
@joshuaolatunji4595
@joshuaolatunji4595 3 года назад
Wow, this is great.
@ArjanCodes
@ArjanCodes 3 года назад
Thank you Joshua, glad you liked it.
Далее
Why the Plugin Architecture Gives You CRAZY Flexibility
24:06
Ко мне подкатил бармен
00:58
Просмотров 204 тыс.
Cohesion and Coupling: Write BETTER PYTHON CODE Part 1
26:14
Why Use Design Patterns When Python Has Functions?
23:23
7 Python Code Smells to AVOID at All Costs
22:10
Просмотров 372 тыс.
Simon Brown - The lost art of software design
41:08
Просмотров 13 тыс.
10 Design Patterns Explained in 10 Minutes
11:04
Просмотров 2,3 млн
Composition Is Better Than Inheritance in Python
23:29
Просмотров 260 тыс.
8 Design Patterns | Prime Reacts
22:10
Просмотров 417 тыс.