- Mastering Node.js(Second Edition)
- Sandro Pasquali Kevin Faaborg
- 266字
- 2021-07-02 19:28:46
Considerations
Any developer is regularly making decisions with a far-reaching impact. It is very hard to predict all the possible consequences resulting from a new bit of code, or a new design theory. For this reason, it may be useful to keep the shape of your code simple, and to force yourself to consistently follow the common practices of other Node developers. These are some guidelines you may find useful, as follows:
- Generally, try to aim for shallow code. This type of refactoring is uncommon in non-evented environments. Remind yourself of it by regularly re-evaluating entry and exit points, and shared functions.
- Consider building your systems using distinct, composable microservices, which we'll discuss in Chapter 9, Microservices.
- Where possible, provide a common context for callback re-entry. Closures are very powerful tools in JavaScript, and by extension, Node, as long as the context frame length of the enclosed callbacks is not excessive.
- Name your functions. In addition to being useful in deeply recursive constructs, debugging code is much easier when a stack trace contains distinct function names, as opposed to anonymous.
- Think hard about priorities. Does the order, in which a given result arrives or a callback is executed, actually matter? More importantly, does it matter in relation to I/O operations? If so, consider nextTick and setImmediate.
- Consider using finite state machines for managing your events. State machines are surprisingly under-represented in JavaScript codebases. When a callback re-enters program flow, it has likely changed the state of your application, and the issuing of the asynchronous call itself is a likely indicator that state is about to change.
推薦閱讀
- Twilio Cookbook
- Hands-On Industrial Internet of Things
- Hands-On Full Stack Development with Spring Boot 2 and React(Second Edition)
- PLC、現場總線及工業網絡實用技術速成
- Building RESTful Web Services with Spring 5(Second Edition)
- Getting Started with WebRTC
- 網絡安全應急響應技術實戰
- TCP/IP基礎(第2版)
- 基于IPv6的家居物聯網開發與應用技術
- 物聯網與智慧農業
- 區塊鏈社區運營手冊
- Cisco無線局域網配置基礎
- 通信系統實戰筆記:無處不在的信號處理
- 結網@改變世界的互聯網產品經理(修訂版)
- 世界網力:2018年中國網信產業桔皮書