易读代码的艺术

0
(0)

易读代码的艺术

作者:DustinBoswell/TrevorFoucher

出版社:东南大学出版社

原作名:TheArtofReadableCode:SimpleandPracticalTechniquesforWritingBetterCode

出版年:2012-6

页数:190

定价:39.00元

ISBN:9787564134471

内容简介
······

本书分析了许多的“糟糕代码”(这些代码有很多是出自于他们自己之手),他们试图厘清为什么这些代码如此糟糕以及如何改进这些代码。他们得出的结论是:你必须写出让他人(这里也包括你自己)花费最少时间能够理解的代码。

作者简介
······

博斯韦尔(Dustin Boswell),毕业于加州理工学院,在谷歌公司从事过五年的Web信息采集基础设施和广告营销计划的研究工作。他先后构建过多个Web站点,目前的主要研究兴趣在于大数据的处理和机器学习领域的相关技术。

富彻(Trevor Foucher),过去十年中先后在微软公司担任Windows及安全相关产品的工程师、经理和技术领导者的职务,现任职于谷歌公司,主要从事谷歌广告营销计划和搜索基础设施的研究工作。

目录
······

PREFACE

1 CODE SHOULD BE EASY TO UNDERSTAND

What Makes Code "Better"?

The Fundamental Theorem of Readability

Is Smaller Always Better?

Does Time—Till—Understanding Conflict with Other Goals?

The Hard Part

Part One SURFACE—LEVEL IMPROVEMENTS

2 PACKING INFORMATION INTO NAMES

Choose Specific Words

Auoid Generic Names Like Imp and retual

Prefer Concrete Names ouer Abstract Names

Attaching Extra Information to a Name

How Lon.g Should a Name Be?

Use Name Formatting to Conuey Meaning

Summary

3 NAMES THAT CAN'T BE MISCONSTRUED

Example: Filter()

Example: Clip(text, length)

Prefer rain and max for (Inclusiue) Limits

Prefer first and last for Inelusiue Ranges

Prefer herin and end for.Inclusiue/Exclusiue Ranges

Naming Booleans

Matching Expectations of Users

Example: Eualuating Multiple Name Candidates

Summary

4 AESTHETICS

Why Do Aesthetics Matter?

BearranRe Line Breaks to Be Consistent and Compact

Use Methods to Clean Up Irregularity

Use Column Alignment When Helpful

Pick a Meaningful Order, and Use It Consistently

Organize Declarations into Blocks

Break Code into "Parafgraphs"

Personal Style uersus Consistency

Summary

5 KNOWING WHAT TO COMMENT

What NOT to Comment

Becording Your Thouyhts

Put Yourself in the Reader's Shoes

Final Thoughts——Getting Over Writer's Block

Summary

6 MAKING COMMENTS PRECISE AND COMPACT

Keep Comments Compact

Avoid Ambiguous Pronouns

Polish Sloppy Sentences

Describe Function Behavior Precisely

Use Input/Output Examples That Illustrate Corner Cases

State the Intent of Your Code

"Named Function Parameter" Comments

Use Information—Dense Words

Summary

Part Two SIMPLIFYING LOOPS AND LOGIC

7 MAKING CONTROL FLOW EASY TO READ

The Order of Arguments in Conditionals

The Order of if/else Blocks

The ?: Conditional Expression (a.k.a."Ternary Operator")

Avoid dogwhile Loops

Returning Early from a Function

The Infamous goto

Minimize Nesting

Can You Follow the Flow of Execution?

Summary

8 BREAKING DOWN GIANT EXPRESSIONS

Explaining Variables

Summary Variables

Using De Morgan's Laws

Abusing Short—Circuit Logic

Example: Wrestling with Complicated Logic

Breaking Down Giant Statements

Another Creative Way to Simplify Expressions

Summary

9 VARIABLES AND READABILITY

Eliminatinfg Variables

Shrink the Scope of Your Variables

Prefer Write—Once Variables

A Final Example

Summary

Part Three REORGANIZING YOUR CODE

10 EXTRACTING UNRELATED SUBPROBLEMS

Introductory Example: find Closest Loeation()

Pure Utility Code

Other General—Purpose Code

Create a Lot of General—Purpose Code

Project—Specific Functionality

Simplilying an Existing Interface

Reshaping an Interface to Your Needs

Taking Things Too Far

Summary

11 ONETASK ATA TIME

Tasks Can Be Small

Extracting Values from an Object

A Larger Example

Summary

12 TURNING THOUGHTS INTO CODE

Describing Logic Clearly

Knowing Your Libraries Helps

Applying This Method to Larger Problems

Summary

13 WRITING LESS CODE

Don't Bother Implementing That Feature——You Won't Need It

Question and Break Douan Your Requirements

Keeping Your Codebase Small

Be Familiar with the Libraries Around You

Example: Using Unix Tools Instead of Coding

Summary

Part Four SELECTED TOPICS

14 TESTING AND READABILITY

Make Tests Easy to Read and Maintain

What's Wrong with This Test?

Making This Test More Readable

Making Error Messages Readable

Choosing Good Test Inputs

Naming Test Functions

What Was Wrong with That Test?

Test—Friendly Deuelopment

Going Too Far

Summary

15 DESIGNING AND IMPLEMENTING A "MINUTE/HOUR COUNTER"

The Problem

Defining the Class Interface

Attempt 1: A Naiue Solution

Attempt 2: Conueyor Belt Design

Attempt 3: A Time—Bucketed Design

Comparing the Three Solutions

Summary

A FURTHER READING

INDEX

评论 ······

初级程序员必读

通俗易懂…慢慢学习中

2.0

读第二遍了,其中的写出易读代码的原则,仍然觉得非常受用。以后也应当会常常参考的。

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册