@ -19764,7 +19764,7 @@ This section contains ideas about higher-level architectural ideas and libraries
Architectural rule summary:
Architectural rule summary:
* [A.1: Separate stable from less stable part of code](#Ra-stable )
* [A.1: Separate stable code from less stable code](#Ra-stable )
* [A.2: Express potentially reusable parts as a library ](#Ra-lib )
* [A.2: Express potentially reusable parts as a library ](#Ra-lib )
* [A.4: There should be no cycles among libraries ](#Ra-dag )
* [A.4: There should be no cycles among libraries ](#Ra-dag )
* [??? ](#??? )
* [??? ](#??? )
@ -19774,9 +19774,9 @@ Architectural rule summary:
* [??? ](#??? )
* [??? ](#??? )
* [??? ](#??? )
* [??? ](#??? )
### < a name = "Ra-stable" > < / a > A.1: Separate stable from less stable part of code
### < a name = "Ra-stable" > < / a > A.1: Separate stable code from less stable code
???
Isolating less stable code facilitates its unit testing, interface improvement, refactoring, and eventual deprecation.
### < a name = "Ra-lib" > < / a > A.2: Express potentially reusable parts as a library
### < a name = "Ra-lib" > < / a > A.2: Express potentially reusable parts as a library
@ -19785,15 +19785,15 @@ Architectural rule summary:
##### Note
##### Note
A library is a collection of declarations and definitions maintained, documented, and shipped together.
A library is a collection of declarations and definitions maintained, documented, and shipped together.
A library could be a set of headers (a "header only library") or a set of headers plus a set of object files.
A library could be a set of headers (a "header- only library") or a set of headers plus a set of object files.
A library can be statically or dynamically linked into a program, or it may be `#include` d
You can statically or dynamically link a library into a program, or you can `#include` a header-only library.
### < a name = "Ra-dag" > < / a > A.4: There should be no cycles among libraries
### < a name = "Ra-dag" > < / a > A.4: There should be no cycles among libraries
##### Reason
##### Reason
* A cycle implies complication of the build process.
* A cycle complicates the build process.
* Cycles are hard to understand and may introduce indeterminism (unspecified behavior).
* Cycles are hard to understand and may introduce indeterminism (unspecified behavior).
##### Note
##### Note