Extract A good parts of a language or technology and use this subset to construct robust and stable applications.
We are always inclined to learn and use all the language features, as if all new and provided are necessary to use them. This book tells us that we should learn and use them selectively.
Not all language features need to be learned and used. Learning and using poorly designed features not only consumes a lot of time and energy, but also damages the maintainability of the Project. On the contrary, learning those excellent features not only saves time, free up more time and energy to do more important things, and help to do things well and increase the income/learning ratio.
Skillful hacker can appreciate its ingenious ideas and the ability to exploit vulnerabilities, but it is not suitable for actual development.
Excellent subset of javascript:
1. Simple and loose type system, mainly Boolean, string, and numeric types, undefined, null two special values;
2. functions are the pivot object of JavaScript, and the functional programming paradigm is worth learning and exploring;
3. The dynamic object mechanism based on prototype inheritance is worth learning and exploring;
4. It is easy to create and operate objects and arrays. JSON data exchange format is easy to use;
By extension, you can also define your own development Subsets and rely on these elements for efficient and reliable development activities.
1. Programming Language: familiar with at least six programming languages and master two programming languages. "Familiarity" refers to a large amount of learning and use, and "Mastery" refers to the ability to build large-scale and reliable software systems using this language.
A process, an object, a function, a declaration, a client language, and a script language. For example, C/Java/clisp/SQL/JavaScript/Python
2. programming tools: at least one editor, one IDE, one project build tool, one version control tool, and one console. For example, VIM/Eclipse/Maven/SVN/Shell (cygwin)
3. programming methods: top-down, intention-directed, bottom-up; first right, then good; pre-design, early start; iterative development, release, feedback and improvement; estimated time;
4. programming style: K & r c, Java programming specifications, neat layout, concise code, no redundancy, consistent, use authentic expression paradigm
5. Programming Model: serial, concurrent, multi-process, multi-thread, mapreduce, B/S, asynchronous, callback, blocking, non-blocking
6 programming ideas: Procedural, object, functional, declarative, primitive, set, combination, abstraction, governance,
7. common algorithms: grouping, recursion, dynamic planning, space-time trade-offs; Priority algorithms; problem conversion;
8. Sorting: insert sorting, fast sorting, heap sorting, and Merge Sorting;
9. Search: ordered search, binary search, hash search, and segmented parallel search;
10. Data Structure: [one-dimensional or two-dimensional] array, linked list, stack, queue, tree, String, hash table; MySQL
11. Text Processing: Find, grep, awk, sed, regular expression;
12. Design Mode: Factory method, Singleton, prototype, template method, strategy, observer, responsibility chain, combination, command, agent, appearance, adapter, decorator, iterator
13. Process and network: PS, top, task manager; netstat, ssh, SCP, socket, HTTP,
14. Development Framework: servlet, spring, struts, ibatis, jquery, extjs, etc.
15. common components: log (Common-logging), utility Library (string, date function, or tool class ),
16. Run the container: apachehttp, tomcat, Jetty, nginx, browser,
17. Software Architecture: MVC; view-controller-service-Dao (API)-db; factories, pipelines and filters; event-driven;
18. unit test: Automatic Generation of parameter combinations, equivalence classification, border test, null test, cross test, reverse test,
19. Code Organization: header file, class file, package mechanism, namespace,
20. Software Engineering: modularization, objects, encapsulation, implementation hiding, agreed interface,
21. Measurement Technology: performance measurement, time
22. Learning Websites: csdn, iteye, infoq, stackoverflow, open-source project website, personal blog, Google, Baidu,
23. Classic Books: Art of computer programming, pearl of programming, deep understanding of computer systems, program design practices, Linux/Unix design ideas, design patterns, etc.