代码大全

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

图书封面


 代码大全下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计12条)

  •     推荐刚毕业的看看,之后的就算了。不亏是大全,从项目开始到结束,面面俱到,但对我来讲有用的东西就不多了。什么都涵盖,难免不够深入。
  •     每天读6页,读了三四个月,中间有时候偷了一下懒,终于读完了。回想过来,有些东西是可以一下子就明白的,例如关于具名常量、格式等等。有一些需要慢慢在以后的实践中慢慢推敲。而且这本书信息量超乎寻常的大,不仅仅指书本身还有每个章节中的引用和书本后面的引用。还有最后一章,专门有一章的推荐读物,全部展开,可能穷尽一生都未必能够读完。所以需要好好的细读,慢慢的斟酌。
  •     作者说:创建一个软件的最彻底的办法并不是创建——而是去购买一个软件,,你可以购买数据库管理系统、屏幕生成程序、报告生成程序和图形环境。在苹果公司 Macintosh 或者微软公司.Windows 环境下编程的一个主要优点是你可以自动获得许多功能;图形程序,对话框管理程序,键盘输入与处理程序,可以自动与任何打印机或者显示器工作的代码,等等....那能写出这么一大本书的人不知道蚊子部分有参考别人的呢,因为这本书的内容实在是太丰富了,而且几乎面面俱到,太神奇了

精彩短评 (总计50条)

  •     重点的读了10多章,还有一些部分是快速阅读的。这本书解决了我对写代码的大部分疑惑。而且深感降低复杂度,以人为本的重要性。
  •     这本书已经被我读了2遍,还想读。最好结合项目研读。
  •     读来像一个循循善诱的老者!
  •     几乎涵盖了软件开发过程中的各方面,整体认识。
  •     程序员的行为规范,通过分析问题,解决问题的方式,更好的理解代码的本质和程序员文化。
  •     好书
  •     外国的书质量就是好,
  •     阐述设计模式、编程习惯。必读
  •     篇幅很长,个人也只是初略翻过一遍。 总体而言,这本书非常经典,但你可以有其他更好的选择,比如代码层面的《编写可读代码的艺术》,软件工程方面的《构建之法》。
  •     教你如何构建代码
  •     经典
  •     有些内容不喜欢,有些用来举例的语言也不是很喜欢,关于性能和代码布局的章节保留意见,不过大部分见解还是认同的=。=
  •     软件工程,是一门技艺,这个是指导说明
  •     在历经6~8个月后,第一遍终于读完了。。好累啊,感觉不会再读第二遍了。不过即使这样懒散地读,收获也超出了想象,当有了方向,有了专业内的价值观后,看一些事情会清晰不少。
  •     读了文前部分 版权取得有点小曲折 不过结果不错 经得起时间的检验 经典就是经典!
  •     很好的书,包括了软件工程里面所有的东西。
  •     修内功
  •     很好地利用你的聪明要比你的聪明有意义的多。。。
  •     前面5章收获不大,更多的是 中间的部分,如何实际写出一种高效优美的代码,如何封装 类,构建子程序,如何定义好的命名。同重构有很多部分的重叠。 其中感触最深的一节,软件工程最首要的核心技术: 控制复杂度!!!控制复杂度!!!
  •     1000页的代码大全也没有看起来那么厚,如同小说一般的看完了,颇为受益.
  •     很早就知道这书不错,这次看完了发现看晚了,如此提纲之作,越早读越好。
  •     点到即止,还不能完全指导实践,很多东西还是要自己摸索体会,比如复杂度的管理
  •     突然发现,我等弱想进步,还是有迹可循的。// mark,5 6 部分待读。
  •     111
  •     基本上可以列为基础必读书了。除了少数过时的内容(例如把快排当作有难度的高级算法),要注意的就是不要陷入近一千页的篇幅中去,有思考、有快慢地读,don't panic,这本书会带来益处的。
  •     涵盖了编程实践的方方面面,满满的干货,看起来很过瘾。就像作者说的,大多数程序员在工作中遇到的难题和疑问,都已经有了很多讨论和实用经验,然而这些基本都存在于论文里,极少人会去翻看,这本书是对软件行业几十年来优秀智力成果的归纳。对于程序员来讲,越早看这本书,获得的收益越大。
  •     太厚了,没有看完,只能以后在积累项目经验的时候反复拿具体的例子来实践,我觉得《构建之法》是迷你版的《代码大全》
  •     第二次开始 这次是看风格与布局 31-34章,已书排版比喻代码风格,新颖 贴切
  •     不错,很多小细节
  •     好厚,终于断断续续看完。后面几章还可以。
  •     软件构建之实践指南
  •     进可砸人,退可装X;好吧,说真的,我不知道能不能看完它。
  •     看起来很舒服的一本书。
  •     控制编程复杂度,面很广,有些可以跳过
  •     nice
  •     大致扫了一遍,适合一点点读,体会每一个细节。
  •     这部大块头确实经典,涉及到了软件开发的方方面面。有点后悔没有早些阅读,值得推荐给还没读过的朋友。它并不是针对某种语言的武林秘籍,应该可以看作是基础内功修炼吧
  •     这本书应该叫《软件构建指南》《大鸟带你飞》
  •     计算机大牛的编程方法.
  •     great 如果你是个程序员的话,都应该读一读
  •     清晰,有内容的设计书,每一个观点都有实证研究或强有力的理由。基本上,一个讲设计的书必须写得清晰有条理,否则你很难相信写书的人能够设计出清晰有条理的软件。
  •     五星已经无法体现这本书到底有多好。反复的读了若干次后,如今我遇到任何关于软件的问题还是会去这本书中寻找答案。
  •     软件工程中的《九阴真经》
  •     初级程序员要多翻翻。
  •     非常厚的巨著,包括许多有效的代码片段。
  •     一本特别厚的书,适合有编程经验的人看
  •     和想象的不同,形而向上的东西,看看就好,不建议没有编程经验的看这个,头很大会
  •     讲的非常好,其中的大部分问题,在以前的工作当中都遇到过。
  •     经典 程序员必看书籍之一
  •     这本书没有讲具体的技术,讲的是一些原则和要求,按照这些方法做,能够让代码构建更轻松,错误更少~~这本书不太适合从头读到尾,直接看自己关心的章节即可~
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024