SlideShare a Scribd company logo
1 of 26
Engineering Highly
Maintainable Code
Steve Andrews
steve@platinumbay.com
Speaker Profile
Steve
ANDREWS
Founder/Executive Director
Platinum Bay Technologies
Software Architect with 16 Years Experience
Four-Time Microsoft MVP Award Recipient
Microsoft Alumni
Speaker at Over 120 Technology Events
Microsoft and IBM Certifications
Non-Profit Board Experience (x3)
Autism Advocate
Experience
Dedicated to applying his talents and experience in the technology sector along
with his personal knowledge of life on the Autism Spectrum and prior business
experience to create a program with an empowering environment where ASD
individuals can find their own personal success.
Short
Biography
Platinum Bay Technologies
Expert People. Expert Solutions. Social Good.
www.platinumbay.com
What is
Maintainability?
Keeping in good condition and working order by testing it, fixing it, and updating it
regularly.
Why
Maintainability?
The cost to maintain today is significantly less than the cost to maintain tomorrow.
Maintenance Costs
Distance
1 hour
1 day
1 week
1 month
6 months
1 year
Effort
1 minute
5 minutes
25 minutes
2 hours
10.5 hours
52 hours
Cost
$1.67
$8.33
$41.67
$208.33
$1,041.67
$5,208.33
Calculating long-term code cost with interest.
How
Maintainability?
Using process and rigor to reduce long-term code cost.
Developer Ramp-Up
Organizing Code
Naming Things
Private m_nOrhID As Int32 = 0
Public Property objDataSet() As System.Data.DataSet
Private Function CreateCciName(ByVal nCctID As Int32, ByVal sCciCardNumber As String) As String
Dim nZlgLanguageID As Int32 = m_oData.nZlgLanguageID
Private Function FindUserOrgID(ByVal nUserID As Int32) As Int32
v_raw_array = Split(v_raw_data, Environment.NewLine)
Spelling Things
m_nTruckingRevenu = m_oData.objOrderData.nLineHaulRevenue
' Build stirng to return
' Invoice is beeing generated flag
Protected m_bInvoiceCration As Boolean = False
''' <summary>
''' Invoice under creation
''' </summary>
Public Property bInvoiceCration() As Boolean
Get
bInvoiceCration = m_bInvoiceCration
Code Formatting
With objFreightOrderHeaders
.nOrhID = objOH.nID
.LoadList(0)
Public Sub SetShippedReportDS(ByVal nPickUpID As Int32, ByVal nLineHaulID As Int32, ByVal nDeliveryID As Int32, _
ByVal nStatusID As Short, ByVal nZorCarrierID As Int32, ByVal dFromDate As Date, _
ByVal dToDate As Date, ByVal bPrinterFriendly As Boolean, ByVal bFormatHtml As Boolean, _
ByVal sOrgAddress As String, ByVal sOrgZip As String, ByVal sOrgCity As String, _
ByVal sOrgState As String, ByVal sDestAddress As String, ByVal sDestZip As String, _
ByVal sDestCity As String, ByVal sDestState As String, ByVal nShipType As Int32)
Linear Code
objOrderHeaders.nMaxRows = 90000
objOrderHeaders.sSpName = "dp_GetOrderRowsHistory”
objOrderHeaders.LoadList(0)
m_objDataSet = objOrderHeaders.objDataSet
objOrderHeaders.LoadList(9000, "dp_GetOrderRowsHistory", 0)
versus
Deleting Code
''#### Dev1
''Dim objCarrierSettings As New Global.Zippers.Data.clsCarrierSettings(m_sConnect)
''Dim objCarrierSetting As Global.Zippers.Data.clsCarrierSetting
''objCarrierSettings.sWhere = "nZorID IN (" + m_objOrderData.sZorCarrierIDs + ")“
''objCarrierSettings.LoadList(0)
''For i As Int32 = 1 To objCarrierSettings.Count
'' objCarrierSetting = CType(objCarrierSettings.Item(i), Global.Zippers.Data.clsCarrierSetting)
'' ' Email specified? '' If objCarrierSetting.sCasInternationalEmail.Length > 0 Then
'' ' Send the order confirmation by e-mail to the customer
'' Dim objMailSender As New Global.Zippers.Data.Misc.clsMisc(m_sConnect)
'' Dim nZusInvoiceSenderID As Int32 = m_oData.Email_nZusPasswordSenderID
'' objMailSender.PutMailInSendQueue(nZusInvoiceSenderID, "", 0, objCarrierSetting….
'' End If
''Next ' Completed OK
Single Responsibility Principle
Imports System.Collections.Generic
Imports System.Dynamic
Imports ExpertPdf.HtmlToPdf
Imports Zippers.zpprsFreight.Business
Imports Zippers.RightWay_GUI
Imports Zippers.Data
Imports System.Text
Imports System.Data.SqlClient
Imports System.IO
Imports System.Media
Imports System.Security
Separation of Concerns
Dim sWordCommodity As String = "Commodity“
If m_bTranslate Then
sWordCommodity = Web.Functions.TranslateText("Word_Commodity", sWordCommodity)
sbReturn.Append("<div class=""xqh_LabelFieldPair"">")
sbReturn.Append(" <div class=""xqh_FieldLabel"">" + sWordCommodity + ":</div>")
sbReturn.Append(" <div class=""xqh_Field"">" + sTruckloadCommodity + "</div>")
sbReturn.Append("</div>")
sbReturn.Append("")
TODOs and Comments
''' <summary> ''' Message ''' </summary>
Public Property sMessage() As String
' Replace tag [LIST_OF_ITEMS] and [#Step2_TotalWeight#]
sBody = sBody.Replace("[#Step2_TotalWeight#]", m_oData.objOrderData…
sBody = sBody.Replace("[LIST_OF_ITEMS]", m_oData.objOrderData.sTruckloadCommodity…
Lines of Code
Error Messages
Testing Things
Extensibility
'### Dev1. 2013-06-04. Customer1 enhancements. ' DEMO: Extensibility
objOrderHeader.nOrhLTLSubType = m_oData.objOrderData.LTLSubTypeSelection
Languages, Tools, and Frameworks
' Return Error Message from OrderProcessTool
Protected m_sErrorMessage As String = "" ''‘
<summary> ''' Error Message string ''' </summary>
Public Property sErrorMessage() As String
Get
sErrorMessage = m_sErrorMessage
End Get
Set(ByVal Value As String)
m_sErrorMessage = Value
End Set
End Property
Dim sbReturn As StringBuilder = New StringBuilder()
Developer Knowledge and Responsibility
Dim sSupportEmailAddr As String = "dev.three@zippersolutions.com"
Code Metrics
Thank You
Contact us for exceptional quality work, allowing you to significantly reduce
long-term development costs.
How can we help you? steve@
platinumbay.com
Platinum Bay Technologies
Expert People. Expert Solutions. Social Good.

More Related Content

Similar to Engineering Highly Maintainable Code: Maintain or Innovate

SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptxSH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptxMongoDB
 
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptxSH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptxMongoDB
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Amazon Web Services
 
MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...
MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...
MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...MongoDB
 
Cloud Security @ Netflix
Cloud Security @ NetflixCloud Security @ Netflix
Cloud Security @ NetflixJason Chan
 
How to leverage what's new in MongoDB 3.6
How to leverage what's new in MongoDB 3.6How to leverage what's new in MongoDB 3.6
How to leverage what's new in MongoDB 3.6Maxime Beugnet
 
Database Wizardry for Legacy Applications
Database Wizardry for Legacy ApplicationsDatabase Wizardry for Legacy Applications
Database Wizardry for Legacy ApplicationsGabriela Ferrara
 
Beyond php it's not (just) about the code
Beyond php   it's not (just) about the codeBeyond php   it's not (just) about the code
Beyond php it's not (just) about the codeWim Godden
 
CHOReOS Web Services FISL Conference Brazil 2012
CHOReOS Web Services FISL Conference Brazil 2012CHOReOS Web Services FISL Conference Brazil 2012
CHOReOS Web Services FISL Conference Brazil 2012choreos
 
Kief Morris - Infrastructure is terrible
Kief Morris - Infrastructure is terribleKief Morris - Infrastructure is terrible
Kief Morris - Infrastructure is terribleThoughtworks
 
Yufeng Guo | Coding the 7 steps of machine learning | Codemotion Madrid 2018
Yufeng Guo |  Coding the 7 steps of machine learning | Codemotion Madrid 2018 Yufeng Guo |  Coding the 7 steps of machine learning | Codemotion Madrid 2018
Yufeng Guo | Coding the 7 steps of machine learning | Codemotion Madrid 2018 Codemotion
 
Building Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchBuilding Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchMongoDB
 
Modular Web Applications With Netzke
Modular Web Applications With NetzkeModular Web Applications With Netzke
Modular Web Applications With Netzkenetzke
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchMongoDB
 
AWS Summit Auckland - Introducing Well-Architected for Developers
AWS Summit Auckland  - Introducing Well-Architected for DevelopersAWS Summit Auckland  - Introducing Well-Architected for Developers
AWS Summit Auckland - Introducing Well-Architected for DevelopersAmazon Web Services
 
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...Priyanka Aash
 
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaAndrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaScala Italy
 
Python at Ordnance Survey
Python at Ordnance SurveyPython at Ordnance Survey
Python at Ordnance SurveyOliviaWilson3
 

Similar to Engineering Highly Maintainable Code: Maintain or Innovate (20)

SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptxSH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
 
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptxSH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
SH 1 - SES 2 part 2 - Tel Aviv MDBlocal - Eliot Keynote.pptx
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?
 
MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...
MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...
MongoDB World 2019: Building an Efficient and Performant Data Model: Real Wor...
 
Cloud Security @ Netflix
Cloud Security @ NetflixCloud Security @ Netflix
Cloud Security @ Netflix
 
How to leverage what's new in MongoDB 3.6
How to leverage what's new in MongoDB 3.6How to leverage what's new in MongoDB 3.6
How to leverage what's new in MongoDB 3.6
 
Database Wizardry for Legacy Applications
Database Wizardry for Legacy ApplicationsDatabase Wizardry for Legacy Applications
Database Wizardry for Legacy Applications
 
Beyond php it's not (just) about the code
Beyond php   it's not (just) about the codeBeyond php   it's not (just) about the code
Beyond php it's not (just) about the code
 
CHOReOS Web Services FISL Conference Brazil 2012
CHOReOS Web Services FISL Conference Brazil 2012CHOReOS Web Services FISL Conference Brazil 2012
CHOReOS Web Services FISL Conference Brazil 2012
 
Kief Morris - Infrastructure is terrible
Kief Morris - Infrastructure is terribleKief Morris - Infrastructure is terrible
Kief Morris - Infrastructure is terrible
 
Yufeng Guo | Coding the 7 steps of machine learning | Codemotion Madrid 2018
Yufeng Guo |  Coding the 7 steps of machine learning | Codemotion Madrid 2018 Yufeng Guo |  Coding the 7 steps of machine learning | Codemotion Madrid 2018
Yufeng Guo | Coding the 7 steps of machine learning | Codemotion Madrid 2018
 
Building Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchBuilding Your First App with MongoDB Stitch
Building Your First App with MongoDB Stitch
 
Modular Web Applications With Netzke
Modular Web Applications With NetzkeModular Web Applications With Netzke
Modular Web Applications With Netzke
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB Stitch
 
AWS Summit Auckland - Introducing Well-Architected for Developers
AWS Summit Auckland  - Introducing Well-Architected for DevelopersAWS Summit Auckland  - Introducing Well-Architected for Developers
AWS Summit Auckland - Introducing Well-Architected for Developers
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
 
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
 
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaAndrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
 
Python at Ordnance Survey
Python at Ordnance SurveyPython at Ordnance Survey
Python at Ordnance Survey
 

Recently uploaded

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Engineering Highly Maintainable Code: Maintain or Innovate

  • 1. Engineering Highly Maintainable Code Steve Andrews steve@platinumbay.com
  • 2. Speaker Profile Steve ANDREWS Founder/Executive Director Platinum Bay Technologies Software Architect with 16 Years Experience Four-Time Microsoft MVP Award Recipient Microsoft Alumni Speaker at Over 120 Technology Events Microsoft and IBM Certifications Non-Profit Board Experience (x3) Autism Advocate Experience Dedicated to applying his talents and experience in the technology sector along with his personal knowledge of life on the Autism Spectrum and prior business experience to create a program with an empowering environment where ASD individuals can find their own personal success. Short Biography
  • 3. Platinum Bay Technologies Expert People. Expert Solutions. Social Good. www.platinumbay.com
  • 4. What is Maintainability? Keeping in good condition and working order by testing it, fixing it, and updating it regularly.
  • 5.
  • 6. Why Maintainability? The cost to maintain today is significantly less than the cost to maintain tomorrow.
  • 7. Maintenance Costs Distance 1 hour 1 day 1 week 1 month 6 months 1 year Effort 1 minute 5 minutes 25 minutes 2 hours 10.5 hours 52 hours Cost $1.67 $8.33 $41.67 $208.33 $1,041.67 $5,208.33 Calculating long-term code cost with interest.
  • 8. How Maintainability? Using process and rigor to reduce long-term code cost.
  • 11. Naming Things Private m_nOrhID As Int32 = 0 Public Property objDataSet() As System.Data.DataSet Private Function CreateCciName(ByVal nCctID As Int32, ByVal sCciCardNumber As String) As String Dim nZlgLanguageID As Int32 = m_oData.nZlgLanguageID Private Function FindUserOrgID(ByVal nUserID As Int32) As Int32 v_raw_array = Split(v_raw_data, Environment.NewLine)
  • 12. Spelling Things m_nTruckingRevenu = m_oData.objOrderData.nLineHaulRevenue ' Build stirng to return ' Invoice is beeing generated flag Protected m_bInvoiceCration As Boolean = False ''' <summary> ''' Invoice under creation ''' </summary> Public Property bInvoiceCration() As Boolean Get bInvoiceCration = m_bInvoiceCration
  • 13. Code Formatting With objFreightOrderHeaders .nOrhID = objOH.nID .LoadList(0) Public Sub SetShippedReportDS(ByVal nPickUpID As Int32, ByVal nLineHaulID As Int32, ByVal nDeliveryID As Int32, _ ByVal nStatusID As Short, ByVal nZorCarrierID As Int32, ByVal dFromDate As Date, _ ByVal dToDate As Date, ByVal bPrinterFriendly As Boolean, ByVal bFormatHtml As Boolean, _ ByVal sOrgAddress As String, ByVal sOrgZip As String, ByVal sOrgCity As String, _ ByVal sOrgState As String, ByVal sDestAddress As String, ByVal sDestZip As String, _ ByVal sDestCity As String, ByVal sDestState As String, ByVal nShipType As Int32)
  • 14. Linear Code objOrderHeaders.nMaxRows = 90000 objOrderHeaders.sSpName = "dp_GetOrderRowsHistory” objOrderHeaders.LoadList(0) m_objDataSet = objOrderHeaders.objDataSet objOrderHeaders.LoadList(9000, "dp_GetOrderRowsHistory", 0) versus
  • 15. Deleting Code ''#### Dev1 ''Dim objCarrierSettings As New Global.Zippers.Data.clsCarrierSettings(m_sConnect) ''Dim objCarrierSetting As Global.Zippers.Data.clsCarrierSetting ''objCarrierSettings.sWhere = "nZorID IN (" + m_objOrderData.sZorCarrierIDs + ")“ ''objCarrierSettings.LoadList(0) ''For i As Int32 = 1 To objCarrierSettings.Count '' objCarrierSetting = CType(objCarrierSettings.Item(i), Global.Zippers.Data.clsCarrierSetting) '' ' Email specified? '' If objCarrierSetting.sCasInternationalEmail.Length > 0 Then '' ' Send the order confirmation by e-mail to the customer '' Dim objMailSender As New Global.Zippers.Data.Misc.clsMisc(m_sConnect) '' Dim nZusInvoiceSenderID As Int32 = m_oData.Email_nZusPasswordSenderID '' objMailSender.PutMailInSendQueue(nZusInvoiceSenderID, "", 0, objCarrierSetting…. '' End If ''Next ' Completed OK
  • 16. Single Responsibility Principle Imports System.Collections.Generic Imports System.Dynamic Imports ExpertPdf.HtmlToPdf Imports Zippers.zpprsFreight.Business Imports Zippers.RightWay_GUI Imports Zippers.Data Imports System.Text Imports System.Data.SqlClient Imports System.IO Imports System.Media Imports System.Security
  • 17. Separation of Concerns Dim sWordCommodity As String = "Commodity“ If m_bTranslate Then sWordCommodity = Web.Functions.TranslateText("Word_Commodity", sWordCommodity) sbReturn.Append("<div class=""xqh_LabelFieldPair"">") sbReturn.Append(" <div class=""xqh_FieldLabel"">" + sWordCommodity + ":</div>") sbReturn.Append(" <div class=""xqh_Field"">" + sTruckloadCommodity + "</div>") sbReturn.Append("</div>") sbReturn.Append("")
  • 18. TODOs and Comments ''' <summary> ''' Message ''' </summary> Public Property sMessage() As String ' Replace tag [LIST_OF_ITEMS] and [#Step2_TotalWeight#] sBody = sBody.Replace("[#Step2_TotalWeight#]", m_oData.objOrderData… sBody = sBody.Replace("[LIST_OF_ITEMS]", m_oData.objOrderData.sTruckloadCommodity…
  • 22. Extensibility '### Dev1. 2013-06-04. Customer1 enhancements. ' DEMO: Extensibility objOrderHeader.nOrhLTLSubType = m_oData.objOrderData.LTLSubTypeSelection
  • 23. Languages, Tools, and Frameworks ' Return Error Message from OrderProcessTool Protected m_sErrorMessage As String = "" ''‘ <summary> ''' Error Message string ''' </summary> Public Property sErrorMessage() As String Get sErrorMessage = m_sErrorMessage End Get Set(ByVal Value As String) m_sErrorMessage = Value End Set End Property Dim sbReturn As StringBuilder = New StringBuilder()
  • 24. Developer Knowledge and Responsibility Dim sSupportEmailAddr As String = "dev.three@zippersolutions.com"
  • 26. Thank You Contact us for exceptional quality work, allowing you to significantly reduce long-term development costs. How can we help you? steve@ platinumbay.com Platinum Bay Technologies Expert People. Expert Solutions. Social Good.