当前位置:主页 > 计算机电子书 > 其它 > 代码下载
代码大全(第2版)

代码大全(第2版) PDF 完整超清版

  • 更新:2024-04-15
  • 大小:152.6 MB
  • 类别:代码
  • 作者:迈克康奈尔
  • 出版:电子工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

代码大全》第2版,由Steve McConnell倾心打造,不仅继承了第1版的经典之处,还在内容与方法论上做了全面的更新与扩展,这本书以其百科全书式的详实内容,成为软件开发领域内不可多得的佳作,它深入探讨了软件构建的各个方面,从基础的代码编写规范到高级的开发实践,旨在帮助读者提高软件质量,有效管理复杂度,特别值得一提的是,书中对代码可读性的强调,以及丰富的高质量代码示例,对于想要精进编程技能的开发者来说,具有极高的参考价值,通过引入大量的真实案例、专家经验和最新研究成果,这本书不仅桥接了初级与高级编程实践之间的鸿沟,还为广大程序员提供了一个全面了解软件开发技术的宝贵资源,对于那些追求卓越、希望在软件工程领域深造的专业人士而言,它的指导意义无疑是巨大的。

“无论您是新手还是经验丰富的开发人员,《代码大全》(第2版)都能教会您思考编程的优秀方法。”

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

目录

  • Acknowledgments
  • ListofChecklists
  • ListofTables
  • ListofFigures
  • 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 DeterminetheKindofSoftwareYoureWorkingOn
  • 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 StatementsWhoseOrderDoesntMatter
  • 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 IsntPersonalCharacterOfftheTopic?
  • 33.2 IntelligenceandHumility
  • 33.3 Curiosity
  • 33.4 IntellectualHonesty
  • 33.5 CommunicationandCooperation
  • 33.6 CreativityandDiscipline
  • 33.7 Laziness
  • 33.8 CharacteristicsThatDontMatterAsMuchAsYouMightThink
  • 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 ASoftwareDevelopersReadingPlan
  • 35.5 JoiningaProfessionalOrganization
  • Bibliography
  • Index

资源下载

资源下载地址1:https://pan.baidu.com/s/1x_ROImu201p6f2qrcYbGPA

相关资源

网友留言