出版社:电子工业出版社
出版日期:2006-12
ISBN:9787121033629
作者:迈克康奈尔
页数:914页
作者简介
《代码大全(第2版)(英文版)》由电子工业出版社出版。
书籍目录
PrefaceAcknowledgmentsListofChecklistsListofTablesListofFiguresPartI LayingtheFoundation1 WelcometoSoftwareConstruction 1.1 WhatIsSoftwareConstruction?1.2 WhyIsSoftwareConstructionImportant?1.3 HowtoReadThisBook2 MetaphorsforaRicherUnderstandingofSoftwareDevelopment2.1 TheImportanceofMetaphors2.2 HowtoUseSoftwareMetaphors2.3 CommonSoftwareMetaphors3 MeasureTwice,CutOnce:UpstreamPrerequisites3.1 ImportanceofPrerequisites3.2 DeterminetheKindofSoftwareYoureWorkingOn3.3 Problem-DefinitionPrerequisite3.4 RequirementsPrerequisite3.5 ArchitecturePrerequisite3.6 AmountofTimetoSpendonUpstreamPrerequisites4 KeyConstructionDecisions4.1 ChoiceofProgrammingLanguage4.2 ProgrammingConventions4.3 YourLocationontheTechnologyWave4.4 SelectionofMajorConstructionPracticesPartII CreatingHigh-QualityCode5 DesigninConstruction5.1 DesignChallenges5.2 KeyDesignConcepts5.3 DesignBuildingBlocks:Heuristics5.4 DesignPractices5.5 CommentsonPopularMethodologies6 WorkingClasses6.1 ClassFoundations:AbstractDataTypes(ADTs)6.2 GoodClassInterfaces6.3 DesignandImplementationIssues6.4 ReasonstoCreateaClass6.5 Language-SpecificIssues6.6 BeyondClasses:Packages7 High-QualityRoutines7.1 ValidReasonstoCreateaRoutine7.2 DesignattheRoutineLevel7.3 GoodRoutineNames7.4 HowLongCanaRoutineBe?7.5 HowtoUseRoutineParameters7.6 SpecialConsiderationsintheUseofFunctions7.7 MacroRoutinesandInlineRoutines8 DefensiveProgramming8.1 ProtectingYourProgramfromInvalidInputs8.2 Assertions8.3 Error-HandlingTechniques8.4 Exceptions8.5 BarricadeYourProgramtoContaintheDamageCausedbyErrors8.6 DebuggingAids8.7 DeterminingHowMuchDefensiveProgrammingtoLeaveinProductionCode8.8 BeingDefensiveAboutDefensiveProgramming9 ThePseudocodeProgrammingProcess9.1 SummaryofStepsinBuildingClassesandRoutines9.2 PseudocodeforPros9.3 ConstructingRoutinesbyUsingthePPP9.4 AlternativestothePPPPartIII Variables10 GeneralIssuesinUsingVariables10.1 DataLiteracy10.2 MakingVariableDeclarationsEasy10.3 GuidelinesforInitializingVariables10.4 Scope10.5 Persistence10.6 BindingTime10.7 RelationshipBetweenDataTypesandControlStructures10.8 UsingEachVariableforExactlyOnePurpose11 ThePowerofVariableNames11.1 ConsiderationsinChoosingGoodNames11.2 NamingSpecificTypesofData11.3 ThePowerofNamingConventions11.4 informalNamingConventions11.5 StandardizedPrefixes11.6 CreatingShortNamesThatAreReadable11.7 KindsofNamestoAvoid12 FundamentalDataTypes12.1 NumbersinGeneral12.2 integers12.3 Floating-PointNumbers12.4 CharactersandStrings12.5 BooleanVariables12.6 EnumeratedTypes12.7 NamedConstants12.8 Arrays12.9 CreatingYourOwnTypes(TypeAliasing)13 UnusualDataTypes13.1 Structures13.2 Pointers13.3 GlobalDataPartIV Statements14 OrganizingStraight-LineCode14.1 StatementsThatMustBeinaSpecificOrder14.2 StatementsWhoseOrderDoesntMatter15 UsingConditionals15.1 ifStatements15.2 caseStatements16 ControllingLoops16.1 SelectingtheKindofLoop16.2 ControllingtheLoop16.3 CreatingLoopsEasily--FromtheInsideOut16.4 CorrespondenceBetweenLoopsandArrays17 UnusualControlStructures17.1 MultipleReturnsfromaRoutine17.2 Recursion17.3 goto17.4 PerspectiveonUnusualControlStructures18 Table-DrivenMethods18.1 GeneralConsiderationsinUsingTable-DrivenMethods18.2 DirectAccessTables18.3 IndexedAccessTables18.4 Stair-StepAccessTables18.5 OtherExamplesofTableLookups19 GeneralControlIssues19.1 BooleanExpressions19.2 CompoundStatements(Blocks)19.3 NullStatements.19.4 TamingDangerouslyDeepNesting19.5 AProgrammingFoundation:StructuredProgramming19.6 ControlStructuresandComplexityPartV CodeImprovements20 TheSoftware-QualityLandscape20.1 CharacteristicsofSoftwareQuality20.2 TechniquesforImprovingSoftwareQuality20.3 RelativeEffectivenessofQualityTechniques20.4 WhentoDoQualityAssurance20.5 TheGeneralPrincipleofSoftwareQuality21Co llaborativeConstruction21.1 OverviewofCollaborativeDevelopmentPractices21.2 PairProgramming21.3 FormalInspections21.4 OtherKindsofCollaborativeDevelopmentPractices22 DeveloperTesting22.1 RoleofDeveloperTestinginSoftwareQuality22.2 RecommendedApproachtoDeveloperTesting22.3 BagofTestingTricks22.4 TypicalErrors22.5 Test-SupportTools22.6 ImprovingYourTesting22.7 KeepingTestRecords23 Debugging23.1 OverviewofDebuggingIssues23.2 FindingaDefect23.3 FixingaDefect23.4 PsychologicalConsiderationsinDebugging23.5 DebuggingTools--ObviousandNot-So-Obvious24 Refactoring24.1 KindsofSoftwareEvolution24.2 IntroductiontoRefactoring24.3 SpecificRefactorings24.4 RefactoringSafely24.5 RefactoringStrategies25 Code-TuningStrategies25.1 PerformanceOverview25.2 IntroductiontoCodeTuning25.3 KindsofFatandMolasses25.4 Measurement25.5 Iteration25.6 SummaryoftheApproachtoCodeTuning26 Code-TuningTechniques26.1 Logic26.2 Loops26.3 DataTransformations26.4 Expressions26.5 Routines26.6 RecodinginaLow-LevelLanguage26.7 TheMoreThingsChange,theMoreTheyStaytheSamePartVI SystemConsiderations27 HowProgramSizeAffectsConstruction27.1 CommunicationandSize27.2 RangeofProjectSizes27.3 EffectofProjectSizeonErrors27.4 EffectofProjectSizeonProductivity27.5 EffectofProjectSizeonDevelopmentActivities28 ManagingConstruction28.1 EncouragingGoodCoding28.2 ConfigurationManagement28.3 EstimatingaConstructionSchedule28.4 Measurement28.5 TreatingProgrammersasPeople28.6 ManagingYourManager29 Integration29.1 ImportanceoftheIntegrationApproach29.2 IntegrationFrequency--PhasedorIncremental?29.3 IncrementalIntegrationStrategies29.4 DailyBuildandSmokeTest30 ProgrammingTools30.1 DesignTools30.2 Source-CodeTools30.3 Executable-CodeTools30.4 Tool-OrientedEnvironments30.5 BuildingYourOwnProgrammingTools30.6 ToolFantasylandPart VII SoftwareCraftsmanship31 LayoutandStyle31.1 LayoutFundamentals31.2 LayoutTechniques31.3 LayoutStyles31.4 LayingOutControlStructures31.5 LayingOutIndividualStatements31.6 LayingOutComments31.7 LayingOutRoutines31.8 LayingOutClasses32 Self-DocumentingCode32.1 ExternalDocumentation32.2 ProgrammingStyleasDocumentation32.3 ToCommentorNottoComment32.4 KeystoEffectiveComments32.5 CommentingTechniques32.6 IEEEStandards33 PersonalCharacter33.1 IsntPersonalCharacterOfftheTopic?33.2 IntelligenceandHumility33.3 Curiosity33.4 IntellectualHonesty33.5 CommunicationandCooperation33.6 CreativityandDiscipline33.7 Laziness33.8 CharacteristicsThatDontMatterAsMuchAsYouMightThink33.9 Habits34 ThemesinSoftwareCraftsmanship34.1 ConquerComplexity34.2 PickYourProcess34.3 WriteProgramsforPeopleFirst,ComputersSecond34.4 ProgramintoYourLanguage,NotinIt34.5 FocusYourAttentionwiththeHelpofConventions34.6 PrograminTermsoftheProblemDomair34.7 WatchforFallingRocks34.8 Iterate,Repeatedly,AgainandAgain34.9 ThouShaltRendSoftwareandReligionAsunder35 WheretoFindMoreInformation35.1 InformationAboutSoftwareConstruction35.2 TopicsBeyondConstruction35.3 Periodicals35.4 ASoftwareDevelopersReadingPlan35.5 JoiningaProfessionalOrganizationBibliographyIndex
编辑推荐
“《代码大全》第1版在我看来堪称软件工程领域的经典之作一而第2版则更棒!” ——Ralph Johnson,伊利诺伊州立大学:《设计模式》(Design Patterns)作者之一 “无论您是新手还是经验丰富的开发人员,《代码大全》(第2版)都能教会您思考编程的最佳方法。” ——Jeffrey Richter(WWW.wintellect.com),《Microsoft NET框架程序设计》(AppfiedMicrosoft.NET Framework Programming)作者 “这本书是讲述软件构建的权威指南一准备孤身前往荒岛的程序员只要带上这本书就足够了。” ——Diomidis Spinellis,《代码阅读方法与实践》(Code Readin9:The Open Soume Perspective)作者 “Steve McConnell是一位既在一线实践,又能把其中奥妙讲个明白的少数人之一。” ——John Vlissides,IBM研究院; 《设计模式》(Design Patterns)作者之一 “Steve McConnell比任何人都·懂得如何构建软件;我们十分庆幸他能把其所有的深邃见解和实践经验写成这样一本重要而新颖的图书。” ——“Visual Basic之父”Alan Cooper,《软件观念革命》(About Face 2.0)作者 Steve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一,在过去的十多年间,本书一直在帮助开发人员编写更好的软件。现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例,充分展示了软件构建的艺术性和科学性。McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识,把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小,本书都将激发您的思维一并帮助您构建高品质的代码。 从本书可以了解到如下这些经久不衰的技术与策略: 做出具有最小复杂度和最大创造性的设计 从协作式的开发中获益 应用防御式编程技术来减少并排查错误 发掘重构或改善代码的机会,并安全可靠地进行代码重构和改善 结合项目的规格合理选用恰当的构建技术 快速而有效地排除问题 尽早地正确解决关键构建问题 分别在项目的早期、中期以及后期加强代码的质量
内容概要
Steve McConnell 是Construx公司首席软件工程师。他是软件工程知识体系(SWEBOK)项目构建知识领域的先驱。Steve曾就职于微软、波音以及西雅图地区的一些公司,从事软件工程的研究。Steve McConnell是以下著作的作者:《快速开发Rapid Development》(1996)、《软件项目长存之道Software Project Survival Guide 》(1998)、和《专业软件开发Professional Software Development》(2004)的 作者。他的书作为杰出软件开发书籍,曾两次获得Software Development杂志的优震撼大奖。1998 年, Steve被Software Development杂志的读者评为软件业最具影响力的三大人物之一,与比尔.盖茨(Bill Gates)和李纳斯.托瓦兹(Linus Torvalds)齐名。而且,Steve还是SPC(Software Productivity Center,加拿大软件进程改进公司)的ESTIMATE Professional(的一款计划和估算工具)主要开发者, Software Development Productivity award(软件开发生产力大奖)的获得者。Steve从1984年就开始从事桌面软件产业,现在在快速开发方法论、工程估算、软件架构实施、性能调整、系统整合、和第三方合同管理方面已经具有专业的技术。
图书封面