28
Code Smells Developing Design Sense for your Code @LlewellynFalco

Developing design sense of code smells

Embed Size (px)

Citation preview

Page 1: Developing design sense of code smells

Code Smells Developing Design Sense for your Code

@LlewellynFalco

Page 3: Developing design sense of code smells

*http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0141357

Dr. Pigeon diagnosis cancer15 days of training

85% successful University of Iowa

Page 4: Developing design sense of code smells

Sparrows Decks

Song House

Page 5: Developing design sense of code smells

Sparrows Decks

Page 6: Developing design sense of code smells

Clutter

Page 7: Developing design sense of code smells

Time to find things

Page 8: Developing design sense of code smells
Page 9: Developing design sense of code smells

Patterns in the code

Page 10: Developing design sense of code smells
Page 11: Developing design sense of code smells

Accounts_Receivable

Balance_Sheet

Cost_of_Goods

Expenses

Liabilities_2010Present_Value

Profit_And_Loss

Outstanding_Invoices

Accounts_Receivable_2010

Balance_Sheet_2010

Cost_of_Goods_2010

Expenses_2010Liabilities

Present_Value_2010

Profit_And_Loss_2010

Outstanding_Invoices_2010

Accounts_Receivable_2010Balance_Sheet_2010Cost_of_Goods_2010Expenses_2010LiabilitiesPresent_Value_2010Profit_And_Loss_2010 Outstanding_Invoices_2010

Page 12: Developing design sense of code smells

Long lines

if (fullName.StartsWith(hintAssemblyName, StringComparison.OrdinalIgnoreCase) && stream != null && BrowserInteropHelper.IsBrowserHosted || (loadedAssembly.FullName.Starts

Page 13: Developing design sense of code smells

Encapsulation & Readability

Page 14: Developing design sense of code smells

if (fullName.StartsWith(hintAssemblyName, StringComparison.OrdinalIgnoreCase) && stream != null && BrowserInteropHelper.IsBrowserHosted || (loadedAssembly.FullName.Starts

if (isAssemblyAvailable())

vs.

Page 15: Developing design sense of code smells

Long Methods

// If a license key has been located... if (licenseKey != null) { // Decrypt licenseKey = ActiproLicenseProvider.DecryptString(licenseKey, encryptionKey);

// Find the licensee and license key string[] licenseKeyData = licenseKey.Split(new Char[] { ';' }); if (BrowserInteropHelper.IsBrowserHosted) { // XBAP licensing uses required assembly / licensee / license key

// Ensure that the specified assembly is in the AppDomain string requiredAssemblyName = licenseKeyData[0].Trim(); Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); bool assemblyFound = false; foreach (Assembly loadedAssembly in assemblies) { if (loadedAssembly.FullName.StartsWith(requiredAssemblyName + ",", StringCompari assemblyFound = true; break; } }

if ((assemblyFound) && (plainTextLicensee == licenseKeyData[2]) && (String.Compare // Assembly was found so use license data licensee = licenseKeyData[2]; licenseKey = licenseKeyData[1]; sourceLocation = ActiproLicenseSourceLocation.AssemblySavedContext; } } else { // Regular licensing just uses licensee / license key licensee = licenseKeyData[1]; licenseKey = licenseKeyData[0]; sourceLocation = ActiproLicenseSourceLocation.AssemblySavedContext; }

Page 16: Developing design sense of code smells

Encapsulation & Readability

Page 17: Developing design sense of code smells

Merge Conflict

Page 18: Developing design sense of code smells

Bad Names

Page 19: Developing design sense of code smells

Time to Onboard New Employees

Page 20: Developing design sense of code smells

Silo’s

Page 21: Developing design sense of code smells

Lingo

Page 22: Developing design sense of code smells

DuplicationDuplication

DuplicationDuplication

DuplicationDuplicationDuplicationDuplicationDuplication

Page 23: Developing design sense of code smells

Inconsistency

Page 24: Developing design sense of code smells
Page 25: Developing design sense of code smells

LlewellynFalco.blogspot.com

Page 26: Developing design sense of code smells

Resourceswww.ApprovalTests.com

21 episode youtube series

Page 27: Developing design sense of code smells

#MobProgrammingGuidebook

Page 28: Developing design sense of code smells

Contact Information@LlewellynFalcohttp://LlewellynFalco.Blogspot.comhttp://www.approvaltests.com