官术网_书友最值得收藏!

The need for modules

A good module system should help with addressing some fundamental needs of software engineering:

  • Having a way to split the codebase into multiple files. This helps with keeping the code more organized, making it easier to understand but also helps with developing and testing various pieces of functionality independently from each other.
  • Allowing code reuse across different projects. A module can, in fact, implement a generic feature that can be useful for different projects. Organizing such functionality within a module can make it easier to bring it into the different projects that may want to use it.
  • Encapsulation (or information hiding). It is generally a good idea to hide implementation complexity and only expose simple interfaces with clear responsibilities. Most module systems allow to selectively keep the private part of the code hidden, while exposing a public interface, such as functions, classes, or objects that are meant to be used by the consumers of the module.
  • Managing dependencies. A good module system should make it easy for module developers to build on top of existing modules, including third-party ones. A module system should also make it easy for module users to import the chain of dependencies that are necessary for a given module to run (transient dependencies).

It is important to clarify the distinction between a module and a module system. We can define a module as the actual unit of software, while a module system is the syntax and the tooling that allows us to define modules and to use them within our projects.

主站蜘蛛池模板: 元朗区| 松潘县| 盐亭县| 施甸县| 沁源县| 固安县| 乌鲁木齐县| 巨野县| 东安县| 马边| 大安市| 乌恰县| 柳州市| 宁夏| 东乌珠穆沁旗| 延庆县| 亳州市| 赞皇县| 无棣县| 增城市| 盈江县| 祁东县| 承德县| 通化县| 侯马市| 义马市| 上林县| 叶城县| 新余市| 乌鲁木齐县| 区。| 旺苍县| 宜川县| 沽源县| 高密市| 古浪县| 浦江县| 林口县| 息烽县| 晴隆县| 浪卡子县|