On the big side, the design here is the code architecture design, including the top level design, detailed design, small aspect, is a specific function or module implementation.
Good code should be able to clearly see the software architecture, module functions, can be self-explanatory. The so-called self-explanation is that you can understand the designer's mind without looking at the document or anything else.
The source code is not simply the product of the software coding process.
Usually we say a design is good or bad there are two ways: use it, and see how it is implemented. Using it is the user experience. The source code is how to implement it.
The design process runs through software development, from large frameworks, to functional modules, to test cases. The quality of each level of design affects the next level. The source code is the concrete realization of the design, the good or bad of the code reflects the design merits.
Design is the accumulation of experience, is the process of continuous learning. A good case will help you a lot.
Design to be able to see, relevant tools are necessary.
For individuals, to master a whole set of methods from top to bottom, in the final analysis, it is a process of practice and accumulation. So it is important that programmers read more and practice more.
Now maintain the code are written by the predecessors, some of the code is difficult to change, if the changes in the time to avoid these problems?
Is it possible to do some local micro-refactoring when modifying. Before modifying, make the appropriate test case first. This requires some development methods of TDD and UT.
The newly developed code is designed before coding, such as interface type, frame structure, drawing flowchart, Block diagram. also write UT.
If you do not feel the need to write UT, you must first think about how to measure, the test methods and conditions listed, including various boundary conditions.
With regard to development documentation, if the scenario is complicated, you must write a document and have the relevant person review it to prevent it from being considered poorly.
Some of the skills needed: UT, TDD, design mode, refactoring, drawing flowchart/block Diagram tools.
See some good code cases and gain insight.
Some ideas about "source code is design"