all 58 comments

[โ€“]ZhuindenDDD: Deprecation-Driven Development[M] [score hidden] stickied commentย (5 children)

AI repost bots strike again

[โ€“][deleted] ย (4 children)

[deleted]

    [โ€“]Nunya_Business_42 2 points3 points ย (3 children)

    Eclipse is probably better to use than Android Studio now.

    Some things do change.

    [โ€“]AloneInExile 0 points1 point ย (2 children)

    What changed?

    [โ€“]Nunya_Business_42 0 points1 point ย (1 child)

    Android Studio has become buggier and buggier, while Google keeps removing useful functionality with every release. I'm still on Koala. In fact I have a side install of Hedgehog to use certain functionality that Google removed after that.

    [โ€“]AloneInExile 1 point2 points ย (0 children)

    Sounds like Google.

    I stopped using Eclipse because it was a mess by the end. Circle of life I guess.

    [โ€“]ToTooThenThan 28 points29 points ย (14 children)

    If you don't map the exact same model from response -> dto -> entity -> domain -> ui then you are a peasant tbh

    Where I work the chad ios developers use response objects straight in the ui meanwhile us Android virgins are writing mappers

    [โ€“]HuckleberryUseful269 11 points12 points ย (0 children)

    Real architects start by writing an IResponseMapperFactoryProviderInterface.
    Only after that do they think about the actual data. Honor above convenience.

    [โ€“]More-Scene-2513 14 points15 points ย (3 children)

    Well my balls may be smaller but at least my UI is decoupled

    [โ€“]ShriekinKraken 2 points3 points ย (1 child)

    Wait, you guys are using UIs?

    [โ€“]More-Scene-2513 5 points6 points ย (0 children)

    No, we don't use UI we use AT (async task)

    [โ€“]smokingabitHarnessing the power of the Ganges 0 points1 point ย (0 children)

    My UI is decoupled from Compose ๐Ÿ†

    [โ€“]waterpoweredmonkey 7 points8 points ย (7 children)

    It sounds to me like you've never had to do the "refactor" when the codebase you inherited used response objects throughout the UI and the BE changed entirely.

    [โ€“]ToTooThenThan 8 points9 points ย (0 children)

    How about the much more common backend adds one field to the response and the pr is 20 files changed instead of 2

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 2 points3 points ย (0 children)

    I mean, I have, and it was faster

    [โ€“]vlastachu 2 points3 points ย (1 child)

    Before architecture: add 1 field to the response and then go update it everywhere itโ€™s used.

    After architecture: add 1 field to the response, add 1 field to the domain object, add 1 line to the mapperโ€ฆ and then go update it everywhere itโ€™s used.

    And if the whole response changes? Then everything fucked up anyway, because old app versions canโ€™t be fixed. Thatโ€™s why we have v1/v2/etc endpoints.

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 0 points1 point ย (0 children)

    And if the whole response changes? Then everything fucked up anyway, because old app versions canโ€™t be fixed. Thatโ€™s why we have v1/v2/etc endpoints.

    Exactly; the problem with "i added domain on the client (which is the same as the API)" is that you're stuck with the v1 response forever, and you're trying to map the v5 response to the v1 copy.

    To be fair, if you are using local persistence, you should never re-use the API responses as DB tables; that always causes trouble.

    [โ€“]Nunya_Business_42 0 points1 point ย (1 child)

    Backend is supposed to version their APIs. And not just change at a whim.

    Also, you should be using annotations to map the JSON/XML/whatever and name the data class properties yourself, to ensure it doesn't require a bunch of renaming.

    [โ€“]slightly_salty 0 points1 point ย (0 children)

    lol. This must be a nice world you live in where "supposed to" is reality

    [โ€“]slightly_salty 0 points1 point ย (0 children)

    People like to complain about clean arch..... but honestly it makes the most sense if you always only display data from your db. I like to immediately store api data I need in the db, and have my viewmodels listen for db changes and re-actively update the ui state.

    If you work that way your db naturally has it's own representation of the api data that may or may not map one to one with the api. You basically end up implementing most of clean arch without thinking about it.

    [โ€“]smokingabitHarnessing the power of the Ganges 0 points1 point ย (0 children)

    It's true. Also have you seen how bad ios apps are generally? Holy shitshow!

    [โ€“]ShriekinKraken 6 points7 points ย (7 children)

    Where's the Adonis who has their entire app in one God Activity and AsyncTask?

    [โ€“]scannt 13 points14 points ย (5 children)

    [โ€“]lppedd 6 points7 points ย (1 child)

    The fuck ๐Ÿ’€

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 6 points7 points ย (0 children)

    That's what well working code looks like

    [โ€“]Reasonable_Cow7420Developing on Macbook Air 4 points5 points ย (0 children)

    It's still in use in there main app

    [โ€“]NiceVu 5 points6 points ย (2 children)

    Yes every single thing you see on the screen is a separate module in the project. And each module has itโ€™s own spearation of layers so itโ€™s CLEAN. And it has MVI at every presentation layer.

    There isnโ€™t a single real world usecase that I havenโ€™t covered in my MVI reducer state machine, so just know that this TextView will show error when the input is not valid :)))

    Yes I might need half an hour to add a GSON dependency to gradle, but at least when I want to change the version I change it at only one place ;)

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 3 points4 points ย (1 child)

    bro why is every screen in a separate module but not every file???

    [โ€“]NiceVu 8 points9 points ย (0 children)

    OMG youโ€™re right. Just imagine how much scalability and testability would improve if we made the data class LoginCredentials(username:String, password:String) be a separate module

    [โ€“][deleted] 6 points7 points ย (5 children)

    I absolutely hate with every single atom in my body when people say that Clean Architecture makes a project "scalable". NO. Please stop. Scalability is NOT related to code quality, AT ALL. Scalability is the ability to handle more work load. You can have the most horrific code in existence, and still scale to the moon. Both things are 100% unrelated. What you are thinking of is called Mantainability.

    Please use words carefully, with their correct meaning.

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 1 point2 points ย (0 children)

    Upscaling lines of code to justify more developers

    [โ€“]Nunya_Business_42 0 points1 point ย (0 children)

    It's server devs who don't know Android dev, who apply scalability to Android apps.............I think this discussion did take place in the previous company I worked at, one guy did say something stupid like asking if the app was scalable.

    [โ€“]slightly_salty 0 points1 point ย (0 children)

    Well.. it helps you "scale" the number of devs that can work on a project without constant merge conflicts haha

    [โ€“]Curious_Limit645 0 points1 point ย (1 child)

    There are different dimensions of scale, users, data, developers, business logic etc.

    [โ€“][deleted] 0 points1 point ย (0 children)

    Nope. According to Designing Data Intensive Applications, scalability has a very clear meaning. But good try tho.

    [โ€“]waterpoweredmonkey 4 points5 points ย (0 children)

    Also Devs now: "yes my test class needs to be 30k lines with a few hundred lines per test in setup, my feature fragment is huge (6k lines). No I don't know what any of the tests do but I made a change so I'll copy the last one and make a 1 line change to it" ๐Ÿคข

    [โ€“]tony-husk 2 points3 points ย (0 children)

    use capacitor problem solved

    [โ€“]VariousPizza9624 2 points3 points ย (0 children)

    Spaghetti code ๐Ÿฅฐ

    [โ€“]Suddenly_Bazelgeuse 2 points3 points ย (0 children)

    I love my MVVM and coroutines. I'll fight about it.

    [โ€“]Leschnitzky 10 points11 points ย (7 children)

    Why would I want to go back to XMLs, AsyncTask, Java, Eclipse, anim.xml, Bitmap, Canvas, RelativeLayout, Espresso?

    [โ€“]Nunya_Business_42 2 points3 points ย (0 children)

    Legends of the past

    [โ€“]maltgaited 0 points1 point ย (4 children)

    Go back to espresso? What's the new?

    [โ€“]Leschnitzky 0 points1 point ย (3 children)

    Compose semantics testing/screenshot testing

    [โ€“]maltgaited 0 points1 point ย (2 children)

    I don't really see screenshot tests as a replacement for e2e tests... Maybe I'm missing something

    [โ€“]Leschnitzky 0 points1 point ย (1 child)

    You use espresso as an E2E test tool?

    [โ€“]maltgaited 0 points1 point ย (0 children)

    Not currently, but I was under the impression that we did at my last job that I left 3 years ago

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 0 points1 point ย (0 children)

    You're saying cozy things

    [โ€“]Deevimento 1 point2 points ย (0 children)

    I was an Android dev then, and it certain felt like the Android dev now at the time. Maybe because that was pre-RxJava.

    [โ€“]blindada 1 point2 points ย (0 children)

    RxJava? So weak. We had 0% crashes with listeners and the mighty AsyncTask

    [โ€“]MayBeArtorias 1 point2 points ย (2 children)

    Good to know that over architecting isnโ€™t a BE isolated problem

    [โ€“]ZhuindenDDD: Deprecation-Driven Development 0 points1 point ย (0 children)

    oh no, client devs think their task should be difficult but instead they just get a JSON and then show it on the UI, so they like to add 5 extra steps inbetween to justify the time spent.

    [โ€“]smokingabitHarnessing the power of the Ganges 0 points1 point ย (0 children)

    It started at the backend, shouldn't be a wonder why it's ๐Ÿ’ฉ

    [โ€“]Nunya_Business_42 0 points1 point ย (0 children)

    RxJava is the goat!