Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

The thought and philosophy of Software Design

Shulou Source: shulou.com Published: 2022-06-03 07:24:17 10月03日 Update

Here are a few principles and ideas related to software design extracted from more classic books, which can not only help you to design software and write code, but also, as Qi Li, author of the preface to Mike Gancarz's "Linux/Unix Design ideas", said, "if you use 'knight-errant' as an analogy, this book is like a secret to teach you to practice internal skills, whether novice or veteran. Practicing basic internal skills is something that must be persevered and even can be studied for a lifetime, and we should also know that sometimes this is the key to the gap between good programmers and ordinary programmers.

Extracted from Robbins and Beebe's "Shell script Learning Guide" Software tool Design Concepts and principles (P8-P20)

(1) one thing at a time.

(2) deal with lines of text, not binary data.

(3) use regular expressions.

(4) Standard input and output is used by default.

(5) avoid chattering.

(6) the output format must be consistent with the acceptable input format.

(7) Let the tools do the difficult part.

(8) think about it before you build a specific tool.

Extracted from Mike Gancarz's "Linux/Unix Design ideas" UNIX philosophy (P5-P9)

(1) small is beauty.

(2) Let each program do only one thing well.

(3) establish a prototype as soon as possible.

(4) to choose portability instead of high efficiency.

(5) use plain text files to store data.

(6) make full use of the leverage effect of software.

(7) use shell scripts to improve leverage and portability.

(8) avoid mandatory user interfaces.

(9) make each program a filter.

Ten sub-principles

(1) allow users to customize the environment.

(2) make the operating system kernel small and lightweight as far as possible.

(3) use lowercase letters and keep them as short as possible.

(4) protect trees.

(5) silence is golden.

(6) thinking in parallel.

(7) the sum of each part is greater than the whole.

(8) look for 90% solutions.

(9) worse is better.

(10) hierarchical thinking.

Tags: Design ideas software programs principles tools things internal skills data leverage formats users portability programmers scripts design ideas parts processing migration input Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno OPPO Reno MariaDB Docker Microsoft Linux