Hacker News new | ask | show | jobs
by Joakal 5393 days ago
Decouple it as best as you can. For example, authentication; make an API/Library/Class for that. Means better development security as no one can write a class that pulls all the username+passwords because that API has the configuration. (I don't know SSN that well to give a more relevant example)

Tons and tons of hooks sounds like very tight integration. While fast and procedural like, maintenance will be hard down the road. If management really want the cheap quick solution, go procedural.

Recommended reading: Object Oriented programming, Case study of Amazon's decoupling.

1 comments

Thank you for the suggestion and recommendation. Right now the application is broken up into decoupled modules pretty well (though it could certainly be improved).

I think I gave a pretty poor example in the question, not explaining exactly what I was confused about. Say I have an Auth module with a full suite of methods (login, logout, etc.). Supposed I had a client request a customization that not only requires a username/password for login, but also (as a contrived example) the user's employee number. I'm not sure how to setup the application architecture to (1) easily allow modification of the Users table to include an "employee_number" field (2) update the Auth module to check for employee number in the login function and (3) modify, say, the Login module to update the form that displays the username/password/employee number fields.

My ultimate goal is to work some system where the Auth module/Login module/database tables did not have to be directly changed, so software can still easily be updated.

Hard to tell without seeing the code: Employee_Auth(Username, EmployeeID) and User_Auth(Username, Password)

If both are true, then authenticated?