Powerful Android Apps CLEAN Refactor

  Рет қаралды 10,132

CodingWithMitch

CodingWithMitch

Күн бұрын

The best android courses on the planet: codingwithmitc...
I did a major refactor to the "Powerful Android Apps with Jetpack Architecture" course.
Here's a high level of what I did:
1. Migrate from Dagger to Hilt.
2. Update Navigation Component.
3. Avoid sharing viewmodels. It makes unit testing easier when I can test fragments in isolation.
4. Splitting business models into Entities and Dto's. This way I have a clear business model, network model, and caching model.
5. Writing use cases.
6. Unidirectional data flow with MVI and kotlin sealed classes. (See Interactors)
7. Refactor message handling system to a Queue.
8. Migrate from Shared Preferences to DataStore.
9. Migrate from Kotlin synthetics to ViewBinding.
10. Write Unit tests for use-cases.
Social:
/ mitch_tabian
/ codingwithmitch
.
.

Пікірлер: 80
@CryptoCodeZone
@CryptoCodeZone 3 жыл бұрын
PERFECT - Just Brilliant, I have written an App based on his and the App (only like 500% larger with multiple Modules similar to Blog) was Buggy in every way, NOW after the re-factor, evrything is running perfect - Well needed re-factor thank for all the work you put into it!!
@subbum3414
@subbum3414 3 жыл бұрын
Hi, mitch. I am watching Powerful Android Apps with Jetpack Architecture on your website. you used Job Manager to Cancelling Jobs. after refactoring those classes are completely gone. Is this refactor has that canceling active job functionality?
@saraha.1336
@saraha.1336 3 жыл бұрын
Can you do a quick overview of everything you need for android development
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Ya should only take a minute or two
@putras.simaremare6986
@putras.simaremare6986 3 жыл бұрын
lol, i saw dota 2 in tech vids, i hit the like
@raul42474247
@raul42474247 3 жыл бұрын
Hey Mitch, take good care of my engagement 🙏 There you go 😅
@codingwithmitch
@codingwithmitch 3 жыл бұрын
I'm securing your engagement and locking it away safely
@ubersticks
@ubersticks 3 жыл бұрын
Did the Powerful Android Apps with Jetpack Architecture course video itself get updated to match this refactoring? It would be fun to retake the course, but only if it were updated.
@codingwithmitch
@codingwithmitch 3 жыл бұрын
The videos did not get updated. That would be a new course
@CryptoCodeZone
@CryptoCodeZone 3 жыл бұрын
@@codingwithmitch I suggest you re-make this app video After the Compose re-Factor, becaus NOTHING will be the same as the original! you re-Factored the 85% back-end part and compose will do the last 15% !!
@codingwithmitch
@codingwithmitch 3 жыл бұрын
@@CryptoCodeZone Ya it would be a good course for sure
@pitter6282
@pitter6282 3 жыл бұрын
yes i get the ideas XD
@vedx
@vedx 3 жыл бұрын
Cool 😎
@ravi_sorathiya
@ravi_sorathiya 3 жыл бұрын
I am jealous of clean architecture. Here is your engagement!
@soulesidibe
@soulesidibe 3 жыл бұрын
Hey Mitch! Thanks for sharing. This channel is huge. Really like it. I like clean a lot and it's cool you use it. I have a couple of questions for you: Dou you plan to separate the layers in different modules? I found that it's great to do that. You can have a real Kotlin module with no android deps. You can hide the implementation of your data sources and expose only the interfaces using dagger The second question is about your usecases. Do you think is a good idea to make the domain be concerns about the retrofit interface or the dao interfaces event there are all interfaces but they have annotations that came frome third party libraries. What your thoughts on that. Thanks again 🙏🏾👍🏾👌🏾
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Guess you'll have to watch the course 😉
@soulesidibe
@soulesidibe 3 жыл бұрын
😅😅
@HienNguyen-xn7tr
@HienNguyen-xn7tr 3 жыл бұрын
Wow the quality is great
@venkatesh4307
@venkatesh4307 3 жыл бұрын
Thanks Mitch ☺️☺️
@abaldan123
@abaldan123 3 жыл бұрын
Mitch, asking the real question: what's the font you're using in AS? Ps great vid
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Avenir
@shardams
@shardams 3 жыл бұрын
Please add time stamps in your informative video
@ChrisAthanas
@ChrisAthanas 3 жыл бұрын
Coming in clean
@rohitchavan556
@rohitchavan556 3 жыл бұрын
background music🔥🔥🔥🔥
@siddharthsharma9829
@siddharthsharma9829 3 жыл бұрын
You can run but you can't hide mitch
@kelvn_pere
@kelvn_pere 3 жыл бұрын
2nd here 😂
@balfit
@balfit 3 жыл бұрын
Engaged. My 2 cents for easy understanding: FIFO -> pipe, you put in something, falls out the other end; you put in multiple things, they cannot overtake each other LIFO (stack) -> bucket, you have to remove the top item (put in last) to access the next lower one etc
@HungVu-dm6xc
@HungVu-dm6xc 3 жыл бұрын
I want to use the new add, not replace, mechanism when using the navigation component, what should I do? Add (not replace) fragment with navigation architecture component
@kasemsm8092
@kasemsm8092 3 жыл бұрын
Nice 🔥
@tamilcartoontv720
@tamilcartoontv720 3 жыл бұрын
Please make jetpack compose masterclass series sir...
@codingwithmitch
@codingwithmitch 3 жыл бұрын
I already have a course on codingwithmitch
@moussawade5957
@moussawade5957 3 жыл бұрын
Thank you Mitch
@hellosagar
@hellosagar 3 жыл бұрын
Thanks
@HungVu-dm6xc
@HungVu-dm6xc 3 жыл бұрын
@bboydarknesz
@bboydarknesz 3 жыл бұрын
So is that mean, I will have some alike this clean architecture in KMM course? And will this refactoring course will have separate course from older one ?
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Ya exactly the same
@tekniktdr
@tekniktdr 3 жыл бұрын
On 28:13, line 106 I think that should be "assert(!emissions[2].isLoading)" Notice the index. Index 1 is the previous data event, and because of that the assertion will be correct (data is not isLoading).
@codingwithmitch
@codingwithmitch 3 жыл бұрын
No second emission contains both data and loading=false
@tekniktdr
@tekniktdr 3 жыл бұрын
@@codingwithmitch Got it. Thanks for the clarification! And for the videos too!
@justinstevenson4168
@justinstevenson4168 3 жыл бұрын
Hey Mitch, please accept my engagement. Also, do you have an idea when we'll start seeing the videos for the next course? Looking forward to it!
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Not sure. Planning lectures now.
@jamesblack2719
@jamesblack2719 3 жыл бұрын
I am curious how your refactor will change regarding your view models when you move to Jetpack Compose. You could probably still just do it at a screen level as long as your compositions aren't shared between screens. Nice video though.
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Ya should be same
@danilochagov8418
@danilochagov8418 3 жыл бұрын
What font do you use in Android Studio?
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Avenir
@danilochagov8418
@danilochagov8418 3 жыл бұрын
@@codingwithmitch thank you.
@siddharthgupta6214
@siddharthgupta6214 3 жыл бұрын
Hilt cannot be used for multi feature module
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Ya it can.
@siddharthgupta6214
@siddharthgupta6214 3 жыл бұрын
@@codingwithmitch can we have a video for that please, since I'm unable to find the perfect solution for this. Official documentation is saying to use dagger since only application module can use hilt and we have to use dagger in other modules
@codingwithmitch
@codingwithmitch 3 жыл бұрын
@@siddharthgupta6214 You set up hilt in the app module then you can declare hilt-modules in the other android modules.
@pablocruz1302
@pablocruz1302 3 жыл бұрын
Hi mitch, do you plan to re record the course of that application? If you can do that it will be awesome. Everything change a lot in a small amount of time since you publish the course
@codingwithmitch
@codingwithmitch 3 жыл бұрын
No plans right now to do that
@mb1-9999
@mb1-9999 3 жыл бұрын
I wonder if you tried the new mongodb realm KMM library? And if is a good alternative for sqldelight?
@Trecoolerok
@Trecoolerok 3 жыл бұрын
I don't think so. I've seen some articles, where companies used realm and drop it after some time
@morbix3683
@morbix3683 3 жыл бұрын
Hi Mitch! Great video as ever, I would love to see you make a course or tutorial about migrating from Dagger to Hilt
@codingwithmitch
@codingwithmitch 3 жыл бұрын
I have a course codingwithmitch.com/courses/hilt-dependency-injection/
@rahulagarwal7369
@rahulagarwal7369 3 жыл бұрын
Hey mitch, Are you going to add refactoring videos for this course?
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Nope
@kartikgarasia5685
@kartikgarasia5685 3 жыл бұрын
How is your baby is doing Mich? Are you teaching her flutter? 😛
@codingwithmitch
@codingwithmitch 3 жыл бұрын
She's great. Big and fat. I post video of her on Instagram all the time. Follow me there to see her
@kartikgarasia5685
@kartikgarasia5685 3 жыл бұрын
@@codingwithmitch I already follow you there, It’s been a one year 🙌🏻😀
@Dohman
@Dohman 3 жыл бұрын
Can you please turn on the auto captions? :)
@codingwithmitch
@codingwithmitch 3 жыл бұрын
They're on. They take a while to generate I think
@ayoubuntu
@ayoubuntu 3 жыл бұрын
Do you think Hilt is better than Koin?
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Both are good who knows
@mdjahidulislam9205
@mdjahidulislam9205 3 жыл бұрын
hi would you make a video on general resource state class in kotlin (that can be used with mostly all classes)
@codingwithmitch
@codingwithmitch 3 жыл бұрын
github.com/mitchtabian/Dota-Info/blob/master/core/src/main/java/com/codingwithmitch/core/domain/DataState.kt
@mdjahidulislam9205
@mdjahidulislam9205 3 жыл бұрын
@@codingwithmitch thank you.
@jatinvashisht4293
@jatinvashisht4293 3 жыл бұрын
Can you make a video how you approach towards learning a new concept of Android and how you achieve that. It will be very helpful. Great video though 👌
@codingwithmitch
@codingwithmitch 3 жыл бұрын
Basically I just try to build something. That's it
@jatinvashisht4293
@jatinvashisht4293 3 жыл бұрын
@@codingwithmitch oh, great. And what you do when you stuck at something, I mean how you solve it. You jump directly into documentation?
@codingwithmitch
@codingwithmitch 3 жыл бұрын
@@jatinvashisht4293 Google, twitter, docs, everywhere
@jatinvashisht4293
@jatinvashisht4293 3 жыл бұрын
@@codingwithmitch Thanks man, I got it. And also thanks you very much for replying me. :)
@gofudgeyourselves9024
@gofudgeyourselves9024 3 жыл бұрын
Hey Mitch good to have you back on KZbin.
Make Your Code Clean With the SOLID Principles
18:24
Philipp Lackner
Рет қаралды 99 М.
DO NOT do this in a Software Engineering Interview
7:59
CodingWithMitch
Рет қаралды 9 М.
pumpkins #shorts
00:39
Mr DegrEE
Рет қаралды 30 МЛН
Пришёл к другу на ночёвку 😂
01:00
Cadrol&Fatich
Рет қаралды 11 МЛН
Modularizing Android Apps
18:16
CodingWithMitch
Рет қаралды 20 М.
Advice from a Principal Software Engineer at Amazon (Steve Huynh)
22:45
Cleaner Code With Use Cases - The Full Guide
14:16
Philipp Lackner
Рет қаралды 51 М.
MVVM  / MVI Repository Pattern with Hilt
1:00:24
CodingWithMitch
Рет қаралды 67 М.
Performance: Using Systrace in Android Studio - MAD Skills
6:49
Android Developers
Рет қаралды 18 М.
iOS Development is Easier than Android Development (VLOG)
20:41
CodingWithMitch
Рет қаралды 52 М.
5 Common Android Anti-Patterns That Make Your Code a Mess
17:06
Philipp Lackner
Рет қаралды 29 М.
6 Design Patterns Every Android Developer Must Know
14:16
Philipp Lackner
Рет қаралды 81 М.
5 Android Dev Mistakes I've Done in the Past (PLEASE AVOID!)
12:45
Philipp Lackner
Рет қаралды 22 М.
Model View View-Model (MVVM): Getting Started
29:12
CodingWithMitch
Рет қаралды 398 М.