Proverbs 1-no absolute
Everything is not absolute. As an architect, you will never be able to fully grasp everything. However, in this position, you must evaluate all options and make a correct decision with sufficient foresight. You need to get some time for yourself to think slowly, so first you should say "everything is not absolute", and then explain why and what variables are there. If you are not sure about the variables, you can choose the general answer-"This depends on the context ".
Proverbs 2-demand exists beyond all
Architecture is only a self-linked part of a software project. The customer will state what they need. If the customer is not clear about their own needs, someone will guide them to a clear answer, which is the responsibility of the analyst. The project manager will arrange infrastructure for the project that has been officially determined. The architect will obtain all the requirements and provide design for developers. Developers will develop based on the intent of the architecture. Database administrators will also try their best to make the database well support applications. You will realize that the customer is at the top of the chain, and the customer's needs are the most important part. What the customer needs is called demand. Of course, few customers know what they really need, so demand will change constantly.
Proverbs 3-Programming Based on interfaces
Although we rely on the final implementation code to fulfill the requirements, we should try to use interfaces as much as possible. Remember the phrase "do not start to implement without interfaces. After careful analysis, you will always find the interface that can be extracted.
Proverbs 4-keep simple, but not simple
You should have heard of the Kiss (Keep It Simple Stupid) principle, but this is just our modified point of view. Simplicity and clarity usually mean excellence. The goal is simple, but you need to keep your own bottom line. If it falls below the bottom line, your solution will become too simple, which is not a good thing.
Proverbs 5-inheritance is for polymorphism, not reuse
Object-Oriented Programming allows us to write only one class, and reuse it continuously and expand it as needed, which relies on inheritance. But is this all about class reuse? The concept of "reuse" is more subtle than your continued look. Polymorphism is the kernel feature of object-oriented programming, which means you can use two inheritance classes interchangeably. At the same time, some people give a summary: "reuse is a complementary feature of inheritance ." However, reuse should not be your root goal. In other words, do not use inheritance only for reuse. It is best to write a new class to meet your needs, instead of inheriting an existing class that was not finished with the job.
Proverbs 6 --- do not use SQL in the non-data access layer
Keep this in mind: separation of concerns. Put the data access code and details (such as the connection character Lu, command, and data table name) aside. You will always start processing either early or later, but not when designing the business logic layer and performance layer. If possible, submit the persistence work to a dedicated tool such as object/Relation Mapper.
Proverbs 7 -- maintainability first
If you can only select one feature for the software, how should you choose? What about scalability, security, performance, testability, and availability? In our opinion, these are not the most important, but the most important is maintainability. With maintainability, all the above features can be implemented in the future.
Proverbs 8-all user input is evil
You should have heard of such a statement. If there is a way for users to intrude into the system, they will be discovered sooner or later. This seems to be Murphy's Law, indeed.
Proverbs 9-post-event Optimization
Donald Knuth once said that premature optimization is the root of all software sins. Let's take this argument further. Instead of optimizing the system, let the design be as flexible as possible to improve and expand. After the system is completed, focus on pure optimization.
Proverbs 10-security and testability considerations during design
If you care about a system feature, consider it before the design begins. The same is true for security and testability. Even an International Organization for Standardization (ISO) specification clearly states this.
From technical pioneer