SlideShare a Scribd company logo
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connascence
1) Definition
2) Types
3) Examples and Usage
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connascence
1) Definition
2) Types
3) Examples and Usage
Propose!
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
At the outset...
DRY BEM
Design Patterns
Modularity
No magic numbers
KISS
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connascence
- taxonomy for different types of coupling
- software quality metric
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
@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.”
@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
@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
@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
@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
@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
@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
@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
@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
@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
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Types
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Name
● Two components must agree on the name of
something
● Locality close*
*same file
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Name
● Two components must agree on the name of
something
● Locality close*
*same file
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Name
● Two components must agree on the name of
something
● Locality further apart
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Type
● Two components must agree on the type of
something
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Type
● Two components must agree on the type of
something
● ...it happens for strong typed languages too:
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Meaning
● Two components must agree on the
interpretation of a value
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Meaning
● Two components must agree on the
interpretation of a value
Aka. “magical number”
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Position
● Two components must be adjacent or occur in
a particluar order
● 3 degrees of connascence
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Position
● Two components must be adjacent or occur in
a particluar order
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Algorithm
● Two components must agree on a particular
algorithm
- Encryption, e.g. SHA-2, SHA512, etc
- Certificate
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Execution Order
● The order of execution of two components is
important
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Timing
● Two components must agree on the timing of
execution
E.g. Race condition between threads
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Value
● Several values have to change together
● Locality further apart
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Connassence of Identity
● Two components must reference the same
entity
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
@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
@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
@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
@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
@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
@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
@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
@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
@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
@PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Usage
@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
@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!
@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

More Related Content

Similar to Connascence - How to detect code smell

Scala Introduction - Synerzip
Scala Introduction - SynerzipScala Introduction - Synerzip
Scala Introduction - Synerzip
Synerzip
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
Sujith Sudhakaran
 
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.org
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.orgEC-WEB: Validator and Preview for the JobPosting Data Model of Schema.org
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.org
Jindřich Mynarz
 
Feature engineering mean encodings
Feature engineering   mean encodingsFeature engineering   mean encodings
Feature engineering mean encodings
Chode Amarnath
 
HTML5, CSS, JavaScript Style guide and coding conventions
HTML5, CSS, JavaScript Style guide and coding conventionsHTML5, CSS, JavaScript Style guide and coding conventions
HTML5, CSS, JavaScript Style guide and coding conventions
Knoldus Inc.
 
Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...
Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...
Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...
LazarinaStoyanova
 
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...
CleverDATA
 
Semantic Analytics
Semantic AnalyticsSemantic Analytics
Semantic Analytics
Thomas Kelly, PMP
 
Semantic Analytics, Smart Data
Semantic Analytics, Smart DataSemantic Analytics, Smart Data
Semantic Analytics, Smart Data
Arthur Keen
 
Data modeling with neo4j tutorial
Data modeling with neo4j tutorialData modeling with neo4j tutorial
Data modeling with neo4j tutorial
Max De Marzi
 
Overview of running R in the Oracle Database
Overview of running R in the Oracle DatabaseOverview of running R in the Oracle Database
Overview of running R in the Oracle Database
Brendan Tierney
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
Nathanial McConnell
 
MLConf - Emmys, Oscars & Machine Learning Algorithms at Netflix
MLConf - Emmys, Oscars & Machine Learning Algorithms at NetflixMLConf - Emmys, Oscars & Machine Learning Algorithms at Netflix
MLConf - Emmys, Oscars & Machine Learning Algorithms at NetflixXavier Amatriain
 
Xavier amatriain, dir algorithms netflix m lconf 2013
Xavier amatriain, dir algorithms netflix m lconf 2013Xavier amatriain, dir algorithms netflix m lconf 2013
Xavier amatriain, dir algorithms netflix m lconf 2013
MLconf
 
Hints in go
Hints in goHints in go
Hints in go
Viktor Pakhuchyi
 
20141216 graph database prototyping ams meetup
20141216 graph database prototyping ams meetup20141216 graph database prototyping ams meetup
20141216 graph database prototyping ams meetup
Rik Van Bruggen
 
Data quality in Real Estate
Data quality in Real EstateData quality in Real Estate
Data quality in Real Estate
Dimitris Kontokostas
 
Building Text Analytics Solutions with AWS ML Services
Building Text Analytics Solutions with AWS ML ServicesBuilding Text Analytics Solutions with AWS ML Services
Building Text Analytics Solutions with AWS ML Services
Amazon Web Services
 
Microformats I: What & Why
Microformats I: What & WhyMicroformats I: What & Why
Microformats I: What & Why
Rachael L Moore
 

Similar to Connascence - How to detect code smell (20)

Scala Introduction - Synerzip
Scala Introduction - SynerzipScala Introduction - Synerzip
Scala Introduction - Synerzip
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.org
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.orgEC-WEB: Validator and Preview for the JobPosting Data Model of Schema.org
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.org
 
amit_new
amit_newamit_new
amit_new
 
Feature engineering mean encodings
Feature engineering   mean encodingsFeature engineering   mean encodings
Feature engineering mean encodings
 
HTML5, CSS, JavaScript Style guide and coding conventions
HTML5, CSS, JavaScript Style guide and coding conventionsHTML5, CSS, JavaScript Style guide and coding conventions
HTML5, CSS, JavaScript Style guide and coding conventions
 
Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...
Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...
Beginner-friendly Guide to ML-enabled Automation in Organic Marketing, Lazari...
 
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...
 
Semantic Analytics
Semantic AnalyticsSemantic Analytics
Semantic Analytics
 
Semantic Analytics, Smart Data
Semantic Analytics, Smart DataSemantic Analytics, Smart Data
Semantic Analytics, Smart Data
 
Data modeling with neo4j tutorial
Data modeling with neo4j tutorialData modeling with neo4j tutorial
Data modeling with neo4j tutorial
 
Overview of running R in the Oracle Database
Overview of running R in the Oracle DatabaseOverview of running R in the Oracle Database
Overview of running R in the Oracle Database
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
 
MLConf - Emmys, Oscars & Machine Learning Algorithms at Netflix
MLConf - Emmys, Oscars & Machine Learning Algorithms at NetflixMLConf - Emmys, Oscars & Machine Learning Algorithms at Netflix
MLConf - Emmys, Oscars & Machine Learning Algorithms at Netflix
 
Xavier amatriain, dir algorithms netflix m lconf 2013
Xavier amatriain, dir algorithms netflix m lconf 2013Xavier amatriain, dir algorithms netflix m lconf 2013
Xavier amatriain, dir algorithms netflix m lconf 2013
 
Hints in go
Hints in goHints in go
Hints in go
 
20141216 graph database prototyping ams meetup
20141216 graph database prototyping ams meetup20141216 graph database prototyping ams meetup
20141216 graph database prototyping ams meetup
 
Data quality in Real Estate
Data quality in Real EstateData quality in Real Estate
Data quality in Real Estate
 
Building Text Analytics Solutions with AWS ML Services
Building Text Analytics Solutions with AWS ML ServicesBuilding Text Analytics Solutions with AWS ML Services
Building Text Analytics Solutions with AWS ML Services
 
Microformats I: What & Why
Microformats I: What & WhyMicroformats I: What & Why
Microformats I: What & Why
 

Recently uploaded

OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 

Recently uploaded (20)

OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 

Connascence - How to detect code smell

  • 1. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connascence 1) Definition 2) Types 3) Examples and Usage
  • 2. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connascence 1) Definition 2) Types 3) Examples and Usage Propose!
  • 3. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com At the outset... DRY BEM Design Patterns Modularity No magic numbers KISS
  • 4. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
  • 5. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connascence - taxonomy for different types of coupling - software quality metric
  • 6. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Definition
  • 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
  • 17. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Types
  • 18. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Name ● Two components must agree on the name of something ● Locality close* *same file
  • 19. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Name ● Two components must agree on the name of something ● Locality close* *same file
  • 20. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Name ● Two components must agree on the name of something ● Locality further apart
  • 21. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Type ● Two components must agree on the type of something
  • 22. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Type ● Two components must agree on the type of something ● ...it happens for strong typed languages too:
  • 23. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Meaning ● Two components must agree on the interpretation of a value
  • 24. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Meaning ● Two components must agree on the interpretation of a value Aka. “magical number”
  • 25. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Position ● Two components must be adjacent or occur in a particluar order ● 3 degrees of connascence
  • 26. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Position ● Two components must be adjacent or occur in a particluar order
  • 27. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Algorithm ● Two components must agree on a particular algorithm - Encryption, e.g. SHA-2, SHA512, etc - Certificate
  • 28. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Execution Order ● The order of execution of two components is important
  • 29. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Timing ● Two components must agree on the timing of execution E.g. Race condition between threads
  • 30. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Value ● Several values have to change together ● Locality further apart
  • 31. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Connassence of Identity ● Two components must reference the same entity
  • 32. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Examples
  • 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
  • 42. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com Usage
  • 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