• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

Overarchitected Projects

Collapse
X
  •  
  • Filter
  • Time
  • Show
Clear All
new posts

    Overarchitected Projects

    I've inherited a project which seems to have been put together by somebody who has read about SOLID principles, Domain Driven Design & then gone into overdrive.

    This is an MVC web applications with 5 conceptual layers, each with its own set of dtos & mappings etc. Every single interface in the solution is defined in its own project, everything has a factory class with is subclassed from some other factory class (even the dtos) and of course all the methods are Async so every single factory class method is a variation of Task<T> CreateAsync<T>().

    Anyone any pointers on any tools that can help me navidste through this morass so I can work out WTF is going on? I can certainly forget about using the trusty old VS Find All References command....

    #2
    Does it also use dependency injection to add another layer of indirection?

    Maybe we're just getting too old for all this crap....

    Comment


      #3
      Originally posted by DimPrawn View Post
      Does it also use dependency injection to add another layer of indirection?

      Maybe we're just getting too old for all this crap....
      Yes and, err, yes.

      Comment


        #4
        Have you given resharper a try has some handy search functions like find all usages.
        Make Mercia Great Again!

        Comment


          #5
          Originally posted by BlueSharp View Post
          Have you given resharper a try has some handy search functions like find all usages.
          I must get a licence and give it a whirl sometime.

          I've been procrastinating about doing it for ages but when I actually find myself needing it, I don't have time for the learning curve.

          Comment


            #6
            Originally posted by Gumbo Robot View Post
            Anyone any pointers on any tools that can help me navidste through this morass so I can work out WTF is going on? I can certainly forget about using the trusty old VS Find All References command....
            I feel your pain, I've used code map when debugging. You get a nice graphical representation of where you have been when stepping through code. You can also save it, so if you have a new customer process, step through it and you can see what's called where and when. It's fairly useful and I've used it on complicated projects.

            You need VS Ultimate, set a breakpoint, when hit, click on debug and select "Show call stack on code map".

            I also agree about Resharper, you don't need to learn everything about it. The best feature for me is ctrl + shift + n, you can then type part of the name of a class and you get a fairly intelligent search. Great, when you can only remember part of the name or not sure where the class is in the solution. So you could just type factory and get a list of factory classes.

            Also, Onenote, for making extensive notes as I learn a codebase.

            Comment


              #7
              Seems to me like we've gone from spaghetti code to spaghetti architecture.

              It's no wonder why I do badly in interviews when I'm supposed to wax lyrical.

              I remember being totally underwhelmed by SOA when that was a buzzword a few years ago when everyone was doing wcf. Such architectures have their applications but I used to see people wrap stuff in a wcf service just for the sake of it. I mean, why would you do that? The overhead of serialisation/deserialisation, extra layers of config, more deployment overhead. Why do that when you can keep it all in process & just make the DLLs available to other projects as and when required?

              Comment


                #8
                Originally posted by Gumbo Robot View Post
                Seems to me like we've gone from spaghetti code to spaghetti architecture.

                It's no wonder why I do badly in interviews when I'm supposed to wax lyrical.

                I remember being totally underwhelmed by SOA when that was a buzzword a few years ago when everyone was doing wcf. Such architectures have their applications but I used to see people wrap stuff in a wcf service just for the sake of it. I mean, why would you do that? The overhead of serialisation/deserialisation, extra layers of config, more deployment overhead. Why do that when you can keep it all in process & just make the DLLs available to other projects as and when required?
                I think we have spaghetti everything Yep I've seen the same with WCF and I've worked on projects where everything talked to each other via wcf and lots of different patterns- right pain. It was clear that know one understood how or why the project was put together that way and when I made a fix, I would look in the history see something similar and make the changes in the same files. It was clear other people did exactly the same.

                I tend to keep it simple with a repository using dapper and a UI project. Do use service classes but only for things that don't necessarily fit into the repository or the controller. I was watching a video from a guy from Israel and basically he was saying don't use a repository do everything in the controller, so using linq accessing the db from the controller. His argument was that you rarely reuse repository methods and end up with a load of similar sounding and doing methods or lots of overloads. Don't quite agree with him on everything but was interesting. Oh I actually quite like dependency injection, sorry

                I was hoping for more replies with other useful tools but there you go. Anyway good luck!
                Last edited by woohoo; 4 February 2016, 09:23.

                Comment


                  #9
                  From my experience these things are built using whatever the latest fad is so that software architects can put it all on their CV and earn more money.

                  Things that seem to have been everywhere and then gone:

                  Waterfall
                  XML
                  XSLT
                  Heavyweight OO
                  ORMs
                  RDBMS
                  WCF
                  SOA

                  Now I see

                  Scrum
                  TDD
                  JSON
                  Interfaces
                  LINQ
                  DI
                  RESTful
                  Object Databases
                  Microservices
                  Cloud

                  as the emporer's new clothes on job specs.

                  Comment


                    #10
                    Now I remember why I left software dev 8 years ago - started struggling with everyone jumping to frameworks and felt it was coding for the sake of coding. I understood the concept of easily reusable code or abstracting from interfaces but never did I actually see code being reused or a whole interface gutted out for a new UI and taking advantage of the abstraction. So why the extra code?!!

                    Comment

                    Working...
                    X