代码大全英文版(英文第2版) PDF 高清电子书 免费下载 完整版 在线阅读- 高飞网
代码大全英文版

代码大全英文版(第2版)

英文版
(美)Steve McConnell(史蒂夫・迈克康奈尔) 著
读者:             ...
本书是著名IT畅销书作者、IEEESo�ware杂志前主编、具有20年编程与项目管理经验的SteveMcConnell十余年前的经典著作的全新演绎。第2版做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等。这是一本百科全书式的软件构建手册,涵盖了软件构建活动的方方面面,尤其强调提高软件质量的种种实践方法。作者特别注重源代码的可读性,详细讨论了类和函数命名、变量命名、数据类型和控制结构、代码布局等编程的最基本要素,也讨论了防御式编程、表驱动法、协同构建、开发者测试、性能优化等有效开发实践,这些都服务于软件的首要技术使命:管理复杂度。为了培养程序员编写高质量代码的习惯,书中展示了大量高质量代码示例。此外,本书还归纳总结了来自专家的经验、业界研究及学术成果,列举了大量软件开发领域的真实案例与统计数据。书中所论述的技术不仅填补了初级与高级编程实践之间的空白,而且为程序员们提供了一个有关软件开发技术的信息来源。本书对经验丰富的程序员、技术带头人、自学的程序员及没有太多编程经验的学生都是大有裨益的。

前言    
致谢    
核对清单    
表目录    
图目录    
PartI LayingtheFoundation    
1 WelcometoSoftwareConstruction    
1.1 WhatIsSoftwareConstruction?    
1.2 WhyIsSoftwareConstructionImportant?    
1.3 HowtoReadThisBook    
2 MetaphorsforaRicherUnderstandingofSoftwareDevelopment    
2.1 TheImportanceofMetaphors    
2.2 HowtoUseSoftwareMetaphors    
2.3 CommonSoftwareMetaphors    
3 MeasureTwice,CutOnce:UpstreamPrerequisites    
3.1 ImportanceofPrerequisites    
3.2 DeterminetheKindofSoftwareYou'reWorkingOn    
3.3 Problem—DefinitionPrerequisite    
3.4 RequirementsPrerequisite    
3.5 ArchitecturePrerequisite    
3.6 AmountofTimetoSpendonUpstreamPrerequisites    
4 KeyConstructionDecisions    
4.1 ChoiceofProgrammingLanguage    
4.2 ProgrammingConventions    
4.3 YourLocationontheTechnologyWave    
4.4 SelectionofMajorConstructionPractices    
PartII CreatingHigh—QualityCode    
5 DesigninConstruction    
5.1 DesignChallenges    
5.2 KeyDesignConcepts    
5.3 DesignBuildingBlocks:Heuristics    
5.4 DesignPractices    
5.5 CommentsonPopularMethodologies    
6 WorkingClasses    
6.1 ClassFoundations:AbstractDataTypes(ADTs)    
6.2 GoodClassInterfaces    
6.3 DesignandImplementationIssues    
6.4 ReasonstoCreateaClass    
6.5 Language—SpecificIssues    
6.6 BeyondClasses:Packages    
7 High—QualityRoutines    
7.1 ValidReasonstoCreateaRoutine    
7.2 DesignattheRoutineLevel    
7.3 GoodRoutineNames    
7.4 HowLongCanaRoutineBe?    
7.5 HowtoUseRoutineParameters    
7.6 SpecialConsiderationsintheUseofFunctions    
7.7 MacroRoutinesandInlineRoutines    
8 DefensiveProgramming    
8.1 ProtectingYourProgramfromInvalidInputs    
8.2 Assertions    
8.3 Error—HandlingTechniques    
8.4 Exceptions    
8.5 BarricadeYourProgramtoContaintheDamageCausedbyErrors    
8.6 DebuggingAids    
8.7 DeterminingHowMuchDefensiveProgrammingtoLeaveinProductionCode    
8.8 BeingDefensiveAboutDefensiveProgramming    
9 ThePseudocodeProgrammingProcess    
9.1 SummaryofStepsinBuildingClassesandRoutines    
9.2 PseudocodeforPros    
9.3 ConstructingRoutinesbyUsingthePPP    
9.4 AlternativestothePPP    
PartIII Variables    
10 GeneralIssuesinUsingVariables    
10.1 DataLiteracy    
10.2 MakingVariableDeclarationsEasy    
10.3 GuidelinesforInitializingVariables    
10.4 Scope    
10.5 Persistence    
10.6 BindingTime    
10.7 RelationshipBetweenDataTypesandControlStructures    
10.8 UsingEachVariableforExactlyOnePurpose    
11 ThePowerofVariableNames    
11.1 ConsiderationsinChoosingGoodNames    
11.2 NamingSpecificTypesofData    
11.3 ThePowerofNamingConventions    
11.4 informalNamingConventions    
11.5 StandardizedPrefixes    
11.6 CreatingShortNamesThatAreReadable    
11.7 KindsofNamestoAvoid    
12 FundamentalDataTypes    
12.1 NumbersinGeneral    
12.2 integers    
12.3 Floating—PointNumbers    
12.4 CharactersandStrings    
12.5 BooleanVariables    
12.6 EnumeratedTypes    
12.7 NamedConstants    
12.8 Arrays    
12.9 CreatingYourOwnTypes(TypeAliasing)    
13 UnusualDataTypes    
13.1 Structures    
13.2 Pointers    
13.3 GlobalData    
PartIV Statements    
14 OrganizingStraight—LineCode    
14.1 StatementsThatMustBeinaSpecificOrder    
14.2 StatementsWhoseOrderDoesn'tMatter    
15 UsingConditionals    
15.1 ifStatements    
15.2 caseStatements    
16 ControllingLoops    
16.1 SelectingtheKindofLoop    
16.2 ControllingtheLoop    
16.3 CreatingLoopsEasily——FromtheInsideOut    
16.4 CorrespondenceBetweenLoopsandArrays    
17 UnusualControlStructures    
17.1 MultipleReturnsfromaRoutine    
17.2 Recursion    
17.3 goto    
17.4 PerspectiveonUnusualControlStructures    
18 Table—DrivenMethods    
18.1 GeneralConsiderationsinUsingTable—DrivenMethods    
18.2 DirectAccessTables    
18.3 IndexedAccessTables    
18.4 Stair—StepAccessTables    
18.5 OtherExamplesofTableLookups    
19 GeneralControlIssues    
19.1 BooleanExpressions    
19.2 CompoundStatements(Blocks)    
19.3 NullStatements.    
19.4 TamingDangerouslyDeepNesting    
19.5 AProgrammingFoundation:StructuredProgramming    
19.6 ControlStructuresandComplexity    
PartV CodeImprovements    
20 TheSoftware—QualityLandscape    
20.1 CharacteristicsofSoftwareQuality    
20.2 TechniquesforImprovingSoftwareQuality    
20.3 RelativeEffectivenessofQualityTechniques    
20.4 WhentoDoQualityAssurance    
20.5 TheGeneralPrincipleofSoftwareQuality    
21Co llaborativeConstruction    
21.1 OverviewofCollaborativeDevelopmentPractices    
21.2 PairProgramming    
21.3 FormalInspections    
21.4 OtherKindsofCollaborativeDevelopmentPractices    
22 DeveloperTesting    
22.1 RoleofDeveloperTestinginSoftwareQuality    
22.2 RecommendedApproachtoDeveloperTesting    
22.3 BagofTestingTricks    
22.4 TypicalErrors    
22.5 Test—SupportTools    
22.6 ImprovingYourTesting    
22.7 KeepingTestRecords    
23 Debugging    
23.1 OverviewofDebuggingIssues    
23.2 FindingaDefect    
23.3 FixingaDefect    
23.4 PsychologicalConsiderationsinDebugging    
23.5 DebuggingTools——ObviousandNot—So—Obvious    
24 Refactoring    
24.1 KindsofSoftwareEvolution    
24.2 IntroductiontoRefactoring    
24.3 SpecificRefactorings    
24.4 RefactoringSafely    
24.5 RefactoringStrategies    
25 Code—TuningStrategies    
25.1 PerformanceOverview    
25.2 IntroductiontoCodeTuning    
25.3 KindsofFatandMolasses    
25.4 Measurement    
25.5 Iteration    
25.6 SummaryoftheApproachtoCodeTuning    
26 Code—TuningTechniques    
26.1 Logic    
26.2 Loops    
26.3 DataTransformations    
26.4 Expressions    
26.5 Routines    
26.6 RecodinginaLow—LevelLanguage    
26.7 TheMoreThingsChange,theMoreTheyStaytheSame    
PartVI SystemConsiderations    
27 HowProgramSizeAffectsConstruction    
27.1 CommunicationandSize    
27.2 RangeofProjectSizes    
27.3 EffectofProjectSizeonErrors    
27.4 EffectofProjectSizeonProductivity    
27.5 EffectofProjectSizeonDevelopmentActivities    
28 ManagingConstruction    
28.1 EncouragingGoodCoding    
28.2 ConfigurationManagement    
28.3 EstimatingaConstructionSchedule    
28.4 Measurement    
28.5 TreatingProgrammersasPeople    
28.6 ManagingYourManager    
29 Integration    
29.1 ImportanceoftheIntegrationApproach    
29.2 IntegrationFrequency——PhasedorIncremental?    
29.3 IncrementalIntegrationStrategies    
29.4 DailyBuildandSmokeTest    
30 ProgrammingTools    
30.1 DesignTools    
30.2 Source—CodeTools    
30.3 Executable—CodeTools    
30.4 Tool—OrientedEnvironments    
30.5 BuildingYourOwnProgrammingTools    
30.6 ToolFantasyland    
Part VII SoftwareCraftsmanship    
31 LayoutandStyle    
31.1 LayoutFundamentals    
31.2 LayoutTechniques    
31.3 LayoutStyles    
31.4 LayingOutControlStructures    
31.5 LayingOutIndividualStatements    
31.6 LayingOutComments    
31.7 LayingOutRoutines    
31.8 LayingOutClasses    
32 Self—DocumentingCode    
32.1 ExternalDocumentation    
32.2 ProgrammingStyleasDocumentation    
32.3 ToCommentorNottoComment    
32.4 KeystoEffectiveComments    
32.5 CommentingTechniques    
32.6 IEEEStandards    
33 PersonalCharacter    
33.1 Isn'tPersonalCharacterOfftheTopic?    
33.2 IntelligenceandHumility    
33.3 Curiosity    
33.4 IntellectualHonesty    
33.5 CommunicationandCooperation    
33.6 CreativityandDiscipline    
33.7 Laziness    
33.8 CharacteristicsThatDon'tMatterAsMuchAsYouMightThink    
33.9 Habits    
34 ThemesinSoftwareCraftsmanship    
34.1 ConquerComplexity    
34.2 PickYourProcess    
34.3 WriteProgramsforPeopleFirst,ComputersSecond    
34.4 ProgramintoYourLanguage,NotinIt    
34.5 FocusYourAttentionwiththeHelpofConventions    
34.6 PrograminTermsoftheProblemDomair    
34.7 WatchforFallingRocks    
34.8 Iterate,Repeatedly,AgainandAgain    
34.9 ThouShaltRendSoftwareandReligionAsunder    
35 WheretoFindMoreInformation    
35.1 InformationAboutSoftwareConstruction    
35.2 TopicsBeyondConstruction    
35.3 Periodicals    
35.4 ASoftwareDeveloper'sReadingPlan    
35.5 JoiningaProfessionalOrganization    
Bibliography    
Index