第一图书网

代码大全

迈克康奈尔 电子工业出版社
出版时间:

2006-12  

出版社:

电子工业出版社  

作者:

迈克康奈尔  

页数:

914  

Tag标签:

无  

内容概要

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

作者简介

  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年就开始从事桌面软件产业,现在在快速开发方法论、工程估算、软件架构实施、性能调整、系统整合、和第三方合同管理方面已经具有专业的技术。

书籍目录

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汇集了来自研究机构、学术界以及业界日常实践的主要知识,把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小,本书都将激发您的思维一并帮助您构建高品质的代码。  从本书可以了解到如下这些经久不衰的技术与策略:  做出具有最小复杂度和最大创造性的设计  从协作式的开发中获益  应用防御式编程技术来减少并排查错误  发掘重构或改善代码的机会,并安全可靠地进行代码重构和改善  结合项目的规格合理选用恰当的构建技术  快速而有效地排除问题  尽早地正确解决关键构建问题  分别在项目的早期、中期以及后期加强代码的质量

图书封面

图书标签Tags

广告

下载页面


代码大全 PDF格式下载



相关图书