SlideShare a Scribd company logo
高品質軟體的基本動作 -如何寫"好的" 程式 
Guidelines in How to Create High Quality Code 
Johnson J. Su 
自由軟體鑄造場蘇展 
2014/11/20 
Code Complete 101
Johnson J. Su 
Linkedin:https://www.linkedin.com/in/jansu 
E-mail:johnsonsu@iis.sinica.edu.tw 
TEL:(02) 2788-3799 ext. 1478
In This Talk 
• 
We will discuss 
• 
How to use Code Complete 
• 
What is high codequality 
• 
How to create high quality code 
• 
We will not discuss 
• 
Part V -Code Improvement 
• 
Part VI -Software Craftsmanship 
• 
Detail of any programing language 
• 
Detail of how to deal with code 
• 
Any useful tools
Agenda 
1. 
What is High Quality Code? 
2. 
Variables (Good and Bad Examples) 
3. 
Statements (Good and Bad Examples) 
4. 
How to create High Quality Code?
Before we start…
Have you ever thought…? 
• 
What are others’ code doing? 
• 
Why others’ code looks like so dirty? 
• 
How to improve/create high quality and more readable code?
Have you ever thought…? 
• 
看不懂別人的Code在做什麼? 
• 
為什麼別人寫的Code 很凌亂? 
• 
如何寫出“品質好”,“可讀性高” 的Code? 
• 
Or more…?
Here’s your answer.
GuidanceCode Complete 2nd 
If you are… 
• 
Junior Developer 
• 
Chapter 11, 18 
• 
Senior Developer 
• 
Chapter 4~9 
• 
Project Manager 
• 
Chapter 2, 33 
• 
Standard Maker 
• 
Chapter 32
GuidanceCode Complete 2nd 
If you are… 
• 
Junior Developer 
• 
Chapter 11, 18 
• 
Senior Developer 
• 
Chapter 4~9 
• 
Project Manager 
• 
Chapter 2, 33 
• 
Standard Maker 
• 
Chapter 32
Agenda 
1. 
What is High Quality Code? 
2. 
Variables (Good and Bad Examples) 
3. 
Statements (Good and Bad Examples) 
4. 
How to create High Quality Code?
What is High Quality Code?
Software Quality?
Software Quality 
External 
• 
Correctness 
• 
Usability 
• 
Efficiency 
• 
Reliability 
• 
Integrity 
• 
Adaptability 
• 
Accuracy 
• 
Robustness 
Internal 
• 
Maintainability 
• 
Flexibility 
• 
Portability 
• 
Reusability 
• 
Readability 
• 
Testability 
• 
Understandability
This talk, we focus onlyonCode Quality
Software Quality 
External 
• 
Correctness 
• 
Usability 
• 
Efficiency 
• 
Reliability 
• 
Integrity 
• 
Adaptability 
• 
Accuracy 
• 
Robustness 
Internal 
• 
Maintainability 
• 
Flexibility 
• 
Portability 
• 
Reusability 
• 
Readability 
• 
Testability 
• 
Understandability
Code Quality 
Understandability 
Maintainability 
Flexibility 
Portability 
Reusability 
Readability 
Testability
Code Quality 
Flexibility 
Portability 
Reusability 
Testability 
Self-documenting
Self-documenting 
Code Quality 
Construction
Self-documenting 
Code Quality 
Construction
Self-documenting 
Code Quality 
Construction
Agenda 
1. 
What is High Quality Code? 
2. 
Variables (Good and Bad Examples) 
3. 
Statements (Good and Bad Examples) 
4. 
How to create High Quality Code?
Variables 
Good and Bad Examples 
Code Complete 2ndPart III Variables
Initializing Variables 
Chapter 10
Initializing Variables 
Chapter 10
Keep Variables “Live” for as Short a Time as Possible 
Chapter 10
Group related statements 
Chapter 10
Group related statements 
Chapter 10
Use each variable for one purpose only 
Chapter 10
Use each variable for one purpose only 
Chapter 10
Considerations in Choosing Good Names 
Chapter 11
Chapter 11
Naming Loop Indexes 
Chapter 11
Naming Loop Indexes 
Chapter 11
Naming Loop Indexes 
Chapter 11
Naming Status Variables 
Chapter 11 
Chapter 11
Naming Status Variables 
Chapter 11
Naming Temporary Variables 
Chapter 11
Naming Temporary Variables 
Chapter 11
Kinds of Names to Avoid 
• 
Avoid misleading names or abbreviations 
• 
e.g. FALSE, TRUE 
• 
Avoid names with similar meanings 
• 
e.g. Inputand inputValue; recordNumand numRecords; fileNumberand fileIndex 
• 
Avoid variables with different meanings but similar names 
• 
Bad: clientRecsand clientReps 
• 
Better: clientRecordsand clientReports 
• 
Avoid names that sound similar, such as wrap and rap 
Chapter 11
Kinds of Names to Avoid 
Chapter 11 
• 
Avoid numerals in names 
• 
Avoid file1and file2, or total1and total2 
• 
Avoid misspelled words in names 
• 
Avoid misspelling highlightas hilite 
• 
Was it highlite? hilite? hilight? hilit? jai-a-lai-t? Whoknows? 
• 
Avoid words that are commonly misspelled in English 
• 
e.g. Absense, acummulate, acsend, calender, concieve, defferred, definate, independance, occassionally
Kinds of Names to Avoid 
Chapter 11 
• 
Don’t differentiate variable names solely by capitalization 
• 
Names are unique 
• 
Avoid to use frdfor fired, FRDfor finalreviewduty, and Frdfor full revenue disbursal. 
• 
Avoid multiple natural languages 
• 
Avoid “color” or “colour” and “check” or “cheque” 
• 
Avoid the names of standard types, variables, and routines
Kinds of Names to Avoid 
Chapter 11 
• 
Don’t use names that are totally unrelated to what the variables represent 
• 
Bad: margaretand pookie. Who know? 
• 
Better: boyfriend, wife, and favoriteBeerare superior! 
• 
Avoid names containing hard-to-read characters
Avoid “magic numbers” 
Chapter 12
Avoid “magic numbers” 
Chapter 12
Boolean Variables 
Chapter 12
Boolean Variables 
Chapter 12
Boolean Variables 
Chapter 12
Boolean Variables 
Chapter 12
Use enumerated types for readability 
Chapter 12
Use enumerated types for readability 
Chapter 12
Avoid literals, even “safe” ones 
Chapter 12 
Chapter 12
Avoid literals, even “safe” ones 
Chapter 12 
Chapter 12
Avoid literals, even “safe” ones 
Chapter 12 
Chapter 12
Avoid literals, even “safe” ones 
Chapter 12
Use structures to clarify data relationships 
Chapter 12
Use structures to clarify data relationships 
Chapter 12
Agenda 
1. 
What is High Quality Code? 
2. 
Variables (Good and Bad Examples) 
3. 
Statements (Good and Bad Examples) 
4. 
How to create High Quality Code?
Statements 
Good and Bad Examples 
Code Complete 2ndPart IV –Statements
Making Code Read from Top to Bottom 
Chapter 12
Making Code Read from Top to Bottom 
Chapter 12
Grouping Related Statements 
Chapter 12
Chapter 15 
Follow the if clause with a meaningful statement 
Chapter 12
Chapter 15 
Follow the if clause with a meaningful statement 
Chapter 12
Chapter 15 
Follow the if clause with a meaningful statement
Don’t make up phony variables to be able to use the case statement 
Chapter 15
Don’t make up phony variables to be able to use the case statement 
Chapter 15
In C++ and Java, avoid dropping through the end of a case statement 
Chapter 15
Abnormal Loop-With-Exit Loops 
Chapter 16
Don’t monkey with the loop index of a for loop to make the loop terminate 
Chapter 16
Use meaningful variable names to make nested loops readable 
Chapter 16
Use meaningful variable names to make nested loops readable 
Chapter 16
Don’t use recursion for factorials or Fibonacci numbers 
Chapter 17
Don’t use recursion for factorials or Fibonacci numbers 
Chapter 17
Using true and false for Boolean Tests 
Chapter 19
Using true and false for Boolean Tests 
Chapter 19
Using true and false for Boolean Tests 
Chapter 19
Agenda 
1. 
What is High Quality Code? 
2. 
Variables (Good and Bad Examples) 
3. 
Statements (Good and Bad Examples) 
4. 
How to create High Quality Code?
How to create High Quality Code? 
Code Complete 2ndPart II –Creating High-Quality Code
Before we start… 
Let’s talk about Software Constructionfirst.
Construction Activities 
Chapter 1
The book focus on these activities with highlight 
Chapter 1
Construction is an… 
Iterative 
process 
Chapter 5
Design is … 
• 
A Wicked Problem 
• 
A Sloppy Process (Even If it Produces a Tidy Result) 
• 
About Tradeoffs and Priorities 
• 
A Heuristic Process 
• 
And more… 
Chapter 5
Form Consistent Abstractions 
Chapter 5
Top-Down and Bottom-Up Design Approaches 
Argument for Bottom Up 
Argument for Top Down 
Chapter 5
Top-Down and Bottom-Up Design Approaches 
Argument for Bottom Up 
Argument for Top Down 
No Argument, Really 
Chapter 5
Software’s Primary Technical Imperative: Managing Complexity 
Accidental and Essential Difficulties 
Importance of Managing Complexity 
Chapter 5
Hide Secrets (Information Hiding) 
Agoodclassinterfaceislikethetipofaniceberg, leavingmostoftheclassunexposed. 
Chapter 5
Hide Secrets (Information Hiding) 
Hiding Complexity 
Hiding Sources
Value of Information Hiding 
Chapter 5 
• 
Asking “What does this class need to hide?” 
If you can put a Functionor Datainto the class’s public interfacewithout compromising its secrets, do. Otherwise, don’t.
Encapsulate Implementation Details 
Chapter 5
Levels of Design 
1.Software system 
2.Subsystem/packages 
3.Classes within packages 
4.Data and routines within classes 
5.Internal routine design 
Chapter 5
Reasons to Create a Class 
• 
Model real-world objects 
• 
Model abstract objects 
• 
Reduce complexity 
• 
Isolate complexity 
• 
Hide implementation details 
• 
Limit effects of changes 
• 
Hide global data 
• 
Streamline parameter passing 
• 
Make central points of control 
• 
Facilitate reusable code 
• 
Plan for a family of programs 
• 
Package related operations 
• 
Accomplish a specific refactoring 
Chapter 6
• 
Avoid creating god classes 
• 
Eliminate irrelevant classes 
• 
Avoid classes named after verbs 
Classes to Avoid 
Chapter 6
Class Foundations: Abstract Data Types (ADTs) 
Picture from: Auto Transport Company Scams 
Chapter 6
If you need to change to a 12-point font size 
Chapter 6
If you need to change to a 12-point font size 
Chapter 6
Poor Abstraction 
Chapter 6
Good Abstraction 
Chapter 6
Better Abstraction 
Chapter 6
Mixed Levels of Abstraction 
Chapter 6
Consistent Levels of Abstraction 
Chapter 6
Exposing Class’s Implementation Details 
Chapter 6
Hiding Class’s Implementation Details 
Chapter 6
What is the routines? 
Chapter 6
What is the routines? 
Chapter 6 
Routines = Functions
Valid Reasons to Create a Routine 
• 
Reduce complexity 
• 
Introduce an intermediate, understandable abstraction 
• 
Avoid duplicate code 
• 
Support subclassing 
• 
Hide sequences 
• 
Hide pointer operations 
• 
Improve portability 
• 
Simplify complicated Boolean tests 
• 
Improve performance 
• 
To ensure all routines are small? 
Chapter 6
Operations That Seem Too Simple to Put Into Routines 
Chapter 7 
Chapter 7
Operations That Seem Too Simple to Put Into Routines 
Chapter 7 
Chapter 7
Operations That Seem Too Simple to Put Into Routines 
Chapter 7 
Chapter 7
Operations That Seem Too Simple to Put Into Routines 
Chapter 7
Good Routine Names 
• 
Describe everything the routine does 
• 
Bad: ComputeReportTotals() 
• 
Silly Names: ComputeReportTotalsAndOpenOutputFile() 
• 
Avoid meaningless, vague, or wishy-washy verbs 
• 
Bad: HandleCalculation(), PerformServices(),OutputUser(), ProcessInput(), and DealWithOutput()… 
• 
HandleOutput() →FormatAndPrintOutput() 
• 
Make names of routines as long as necessary 
Chapter 7
Good Routine Names 
• 
Don’t differentiate routine names solely by number 
• 
Bad: Part1, Part2, OutputUser0, OutputUser1, and OutputUser2 
• 
To name a function, use a description of the return value 
• 
e.g. cos(), customerId.Next(), printer.IsReady(), and pen.CurrentColor() 
• 
To name a procedure, use a strong verb followed by an object 
• 
e.g. PrintDocument(), CalcMonthlyRevenues(), CheckOrderlnfo(), and RepaginateDocument() 
Chapter 7
Good Routine Names 
• 
Establish conventions for common operations 
• 
e.g. employee.id.Get(), dependent.GetId(), supervisor(), candidate.id() 
• 
Use opposites precisely 
Chapter 7
How Long Can a Routine Be? 
100 
200 
Less then 200 lines is better. 
Chapter 7
Don’t use routine parameters as working variables 
Chapter 7
Don’t use routine parameters as working variables 
Chapter 7
Limit the number of a routine’s parameters to about Seven7 
Chapter 7
What is Pseudocode? 
Chapter 5 
Pseudocodeisaninformalhigh-leveldescriptionoftheoperatingprincipleofacomputerprogramorotheralgorithm.
PseudocodePrinciples 
Chapter 5
PseudocodeProgramming Process: Classes 
Chapter 5
PseudocodeProgramming Process: Routines 
Chapter 5
Constructing Routines by Using the PPP 
Chapter 5 
Design the routine. 
Code the routine. 
Check the code. 
Clean up loose ends. 
Repeat as needed. 
1 
2 
3 
4 
5
Code the Routine 
Chapter 5 
1 
2 
3 
4 
5
Write the routine declaration 
Chapter 5 
1
Writing the First and Last Statements Around Pseudocode 
Chapter 5 
2 
Chapter 5
Turn the Pseudocodeinto High-level comments 
Chapter 5 
Chapter 5 
2
Chapter 5 
The code for each comment has been filled in from here down. 
3
Chapter 15 
Example of a Complete Routines Overview 
Routine Header 
Routine Interface 
The code for each comment has been filled in from here down. 
The last paragraph of Routine
Self-documenting 
Code Quality 
Construction
Thank You!
Q & A

More Related Content

What's hot

How To Become A Good C# Programmer
How To Become A Good C# ProgrammerHow To Become A Good C# Programmer
How To Become A Good C# Programmer
LearnItFirst.com
 
Designing with tests
Designing with testsDesigning with tests
Designing with tests
Dror Helper
 
WordCamp US: Clean Code
WordCamp US: Clean CodeWordCamp US: Clean Code
WordCamp US: Clean Code
mtoppa
 
Coding standard and coding guideline
Coding standard and coding guidelineCoding standard and coding guideline
Coding standard and coding guideline
Dhananjaysinh Jhala
 
Coding standard
Coding standardCoding standard
Coding standard
FAROOK Samath
 
Writing High Quality Code in C#
Writing High Quality Code in C#Writing High Quality Code in C#
Writing High Quality Code in C#
Svetlin Nakov
 
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
DevDay.org
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesEdorian
 
Coding standards
Coding standardsCoding standards
Coding standards
Mark Reynolds
 
TDD with Ruby
TDD with RubyTDD with Ruby
TDD with Ruby
Ismael G Marín C
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET Dmytro Mindra
 
Coding standards and guidelines
Coding standards and guidelinesCoding standards and guidelines
Coding standards and guidelines
brijraj_singh
 
Understanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScriptUnderstanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScriptMark Daggett
 
Best Practices of Software Development
Best Practices of Software DevelopmentBest Practices of Software Development
Best Practices of Software Development
Folio3 Software
 
Becoming fully buzzword compliant
Becoming fully buzzword compliantBecoming fully buzzword compliant
Becoming fully buzzword compliant
Trisha Gee
 

What's hot (16)

How To Become A Good C# Programmer
How To Become A Good C# ProgrammerHow To Become A Good C# Programmer
How To Become A Good C# Programmer
 
Designing with tests
Designing with testsDesigning with tests
Designing with tests
 
WordCamp US: Clean Code
WordCamp US: Clean CodeWordCamp US: Clean Code
WordCamp US: Clean Code
 
Coding standard and coding guideline
Coding standard and coding guidelineCoding standard and coding guideline
Coding standard and coding guideline
 
Coding standard
Coding standardCoding standard
Coding standard
 
Coding Standards
Coding StandardsCoding Standards
Coding Standards
 
Writing High Quality Code in C#
Writing High Quality Code in C#Writing High Quality Code in C#
Writing High Quality Code in C#
 
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principles
 
Coding standards
Coding standardsCoding standards
Coding standards
 
TDD with Ruby
TDD with RubyTDD with Ruby
TDD with Ruby
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
Coding standards and guidelines
Coding standards and guidelinesCoding standards and guidelines
Coding standards and guidelines
 
Understanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScriptUnderstanding, measuring and improving code quality in JavaScript
Understanding, measuring and improving code quality in JavaScript
 
Best Practices of Software Development
Best Practices of Software DevelopmentBest Practices of Software Development
Best Practices of Software Development
 
Becoming fully buzzword compliant
Becoming fully buzzword compliantBecoming fully buzzword compliant
Becoming fully buzzword compliant
 

Viewers also liked

Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115BRIAN FLEMING, MBA
 
如何寫好程式
如何寫好程式如何寫好程式
如何寫好程式
Chris Wang
 
Cppunit下載、編譯、使用與困難排除
Cppunit下載、編譯、使用與困難排除Cppunit下載、編譯、使用與困難排除
Cppunit下載、編譯、使用與困難排除
Chris Wang
 
代码大全(内训)
代码大全(内训)代码大全(内训)
代码大全(内训)
Horky Chen
 
Design in construction
Design in constructionDesign in construction
Design in construction
Asha Sari
 
Code tuning techniques
Code tuning techniquesCode tuning techniques
Code tuning techniques
Asha Sari
 
Integration
IntegrationIntegration
Integration
Asha Sari
 
程序员实践之路
程序员实践之路程序员实践之路
程序员实践之路
Horky Chen
 
程序员发展漫谈
程序员发展漫谈程序员发展漫谈
程序员发展漫谈Horky Chen
 
MOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_GitMOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_Git
Su Jan
 
Coding Style
Coding StyleCoding Style
Coding Style
Hung-Wei Liu
 
A Guideline to Test Your Own Code - Developer Testing
A Guideline to Test Your Own Code - Developer TestingA Guideline to Test Your Own Code - Developer Testing
A Guideline to Test Your Own Code - Developer Testing
Folio3 Software
 
Design in construction
Design in constructionDesign in construction
Design in construction
Asha Sari
 
Java scriptcore brief introduction
Java scriptcore brief introductionJava scriptcore brief introduction
Java scriptcore brief introduction
Horky Chen
 
Defencive programming
Defencive programmingDefencive programming
Defencive programming
Asha Sari
 
Code tuning strategies
Code tuning strategiesCode tuning strategies
Code tuning strategies
Asha Sari
 
Code Complete
Code CompleteCode Complete
Code Tuning
Code TuningCode Tuning
Code Tuning
bgtraghu
 
The pseudocode
The pseudocodeThe pseudocode
The pseudocode
Asha Sari
 

Viewers also liked (20)

Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115
 
如何寫好程式
如何寫好程式如何寫好程式
如何寫好程式
 
Cppunit下載、編譯、使用與困難排除
Cppunit下載、編譯、使用與困難排除Cppunit下載、編譯、使用與困難排除
Cppunit下載、編譯、使用與困難排除
 
代码大全(内训)
代码大全(内训)代码大全(内训)
代码大全(内训)
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
Code tuning techniques
Code tuning techniquesCode tuning techniques
Code tuning techniques
 
Integration
IntegrationIntegration
Integration
 
程序员实践之路
程序员实践之路程序员实践之路
程序员实践之路
 
程序员发展漫谈
程序员发展漫谈程序员发展漫谈
程序员发展漫谈
 
MOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_GitMOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_Git
 
Coding Style
Coding StyleCoding Style
Coding Style
 
A Guideline to Test Your Own Code - Developer Testing
A Guideline to Test Your Own Code - Developer TestingA Guideline to Test Your Own Code - Developer Testing
A Guideline to Test Your Own Code - Developer Testing
 
Variables
VariablesVariables
Variables
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
Java scriptcore brief introduction
Java scriptcore brief introductionJava scriptcore brief introduction
Java scriptcore brief introduction
 
Defencive programming
Defencive programmingDefencive programming
Defencive programming
 
Code tuning strategies
Code tuning strategiesCode tuning strategies
Code tuning strategies
 
Code Complete
Code CompleteCode Complete
Code Complete
 
Code Tuning
Code TuningCode Tuning
Code Tuning
 
The pseudocode
The pseudocodeThe pseudocode
The pseudocode
 

Similar to 高品質軟體的基本動作 101 for NTHU

Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
eddiehaber
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
Mike Harris
 
Clean code
Clean codeClean code
Clean code
Simon Sönnby
 
Lotusphere 2009 The 11 Commandments
Lotusphere 2009 The 11 CommandmentsLotusphere 2009 The 11 Commandments
Lotusphere 2009 The 11 Commandments
Bill Buchan
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practicesBill Buchan
 
Coding conventions
Coding conventionsCoding conventions
Coding conventions
systemcrashed
 
Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)
Shirish Bari
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from Industry
Garth Gilmour
 
10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs
Atlassian
 
While You Are Coding
While You Are CodingWhile You Are Coding
While You Are Coding
Zeynep Düzyurt
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
Alexander Makarov
 
Refactoring, 2nd Edition
Refactoring, 2nd EditionRefactoring, 2nd Edition
Refactoring, 2nd Edition
jexp
 
Software development fundamentals
Software development fundamentalsSoftware development fundamentals
Software development fundamentals
Alfred Jett Grandeza
 
SOLID design principles in Ruby
SOLID design principles in RubySOLID design principles in Ruby
SOLID design principles in RubyAnil Wadghule
 
The View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsThe View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsBill Buchan
 
TDD - for people who don't need it
TDD - for people who don't need itTDD - for people who don't need it
TDD - for people who don't need it
Choon Keat Chew
 
International business english (Workshop, part 3) Svitlana Stetsy
International business english (Workshop, part 3) Svitlana StetsyInternational business english (Workshop, part 3) Svitlana Stetsy
International business english (Workshop, part 3) Svitlana Stetsy
Lviv Startup Club
 
Python brochure (2)
Python brochure (2)Python brochure (2)
Python brochure (2)
Zabeel Institute
 
Writing clean and maintainable code
Writing clean and maintainable codeWriting clean and maintainable code
Writing clean and maintainable code
Marko Heijnen
 
Application Architecture
Application ArchitectureApplication Architecture
Application Architecture
Lars-Erik Kindblad
 

Similar to 高品質軟體的基本動作 101 for NTHU (20)

Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Clean code
Clean codeClean code
Clean code
 
Lotusphere 2009 The 11 Commandments
Lotusphere 2009 The 11 CommandmentsLotusphere 2009 The 11 Commandments
Lotusphere 2009 The 11 Commandments
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
 
Coding conventions
Coding conventionsCoding conventions
Coding conventions
 
Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from Industry
 
10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs
 
While You Are Coding
While You Are CodingWhile You Are Coding
While You Are Coding
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Refactoring, 2nd Edition
Refactoring, 2nd EditionRefactoring, 2nd Edition
Refactoring, 2nd Edition
 
Software development fundamentals
Software development fundamentalsSoftware development fundamentals
Software development fundamentals
 
SOLID design principles in Ruby
SOLID design principles in RubySOLID design principles in Ruby
SOLID design principles in Ruby
 
The View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsThe View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tips
 
TDD - for people who don't need it
TDD - for people who don't need itTDD - for people who don't need it
TDD - for people who don't need it
 
International business english (Workshop, part 3) Svitlana Stetsy
International business english (Workshop, part 3) Svitlana StetsyInternational business english (Workshop, part 3) Svitlana Stetsy
International business english (Workshop, part 3) Svitlana Stetsy
 
Python brochure (2)
Python brochure (2)Python brochure (2)
Python brochure (2)
 
Writing clean and maintainable code
Writing clean and maintainable codeWriting clean and maintainable code
Writing clean and maintainable code
 
Application Architecture
Application ArchitectureApplication Architecture
Application Architecture
 

Recently uploaded

在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
ongomchris
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
Kamal Acharya
 
Runway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptxRunway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptx
SupreethSP4
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
ankuprajapati0525
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
zwunae
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
MdTanvirMahtab2
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
gerogepatton
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
SamSarthak3
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
WENKENLI1
 

Recently uploaded (20)

在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
 
Runway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptxRunway Orientation Based on the Wind Rose Diagram.pptx
Runway Orientation Based on the Wind Rose Diagram.pptx
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
 

高品質軟體的基本動作 101 for NTHU