7. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
● (1995) Meilir Page-Jones;
“In software engineering, two components are connascent
if a change in one would require the other to be modified in
order to maintain the overall correctness of the system.”
8. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
9. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
10. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Direction where to refactor to
11. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Direction where to refactor to
12. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Three axis of connascence:
● Strength:
Stronger connascence are harder to discover, or
harder to refactor
● Degree:
An entity that is connascent with thousands of
other entities is likely to be a larger issue than one
that is connascent with only a few.
● Locality:
Connascent elements that are close together in a
codebase are better than ones that are far apart
Strength
Weak Strong
Degree
Few A lotFew A lot
Locality
Close Far apart
13. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Three axis of connascence:
● Strength:
Stronger connascence are harder to discover, or
harder to refactor
● Degree:
An entity that is connascent with thousands of
other entities is likely to be a larger issue than one
that is connascent with only a few.
● Locality:
Connascent elements that are close together in a
codebase are better than ones that are far apart
Direction where to refactor to
Strength
Weak Strong
Degree
Few A lotFew A lot
Locality
Close Far apart
14. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Three axis of connascence:
● Strength:
Stronger connascence are harder to discover, or
harder to refactor
● Degree:
An entity that is connascent with thousands of
other entities is likely to be a larger issue than one
that is connascent with only a few.
● Locality:
Connascent elements that are close together in a
codebase are better than ones that are far apart
Direction where to refactor to
Strength
Weak Strong
Degree
Few A lotFew A lot
Locality
Close Far apart
15. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Types of Connascences:
Identity
Value
Timing
Execution Order
-----------------
Position
Algorithm
Meaning
Type
Name
Strength Degree
Locality
16. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Types of Connascences:
Identity
Value
Timing
Execution Order
-----------------
Position
Algorithm
Meaning
Type
Name
Strength Degree
Locality
33. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
34. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
35. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
36. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
37. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
38. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
39. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
40. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
*still connascence. of value, but locality close
41. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
43. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Usage
● Gives me a way to evaluate and prioritize code
review/refactor (now I don’t do fixes that are
easiest but the most risky)
● New tool to communicate (good reviews aren’t
based on personal taste but on objective metric)
● Gives new developers a
framework/compass/guidance for writing good,
clean, and maintainable code
44. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Usage
● Gives me a way to evaluate and prioritize code
review/refactor (now I don’t do fixes that are
easiest but the most risky)
● New tool to communicate (good reviews aren’t
based on personal taste but on objective metric)
● Gives new developers a
framework/compass/guidance for writing good,
clean, and maintainable code
Propose!
45. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Sources
● “What every Software Developer should know about
Object-Oriented Programming” by Meilir Page-Jones
● ETE 2012 - Jim Weirich - Connascence Examined:
https://www.youtube.com/watch?v=NLT7Qcn_PmI
● Codemania 2015: Josh Robb - Connascence &
Coupling:
https://www.youtube.com/watch?v=Ip2o4vbAK3s