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

代碼大全(第2版)(英文版)
定價:888
NT $ 888
 

內容簡介

本書是著名IT暢銷書作者、IEEESo?ware雜志前主編、具有20年編程與項目管理經驗的SteveMcConnell十余年前的經典著作的全新演繹。

第2版做了全面的更新,增加了很多與時俱進的內容,包括對新語言、新的開發過程與方法論的討論等。

這是一本百科全書式的軟件構建手冊,涵蓋了軟件構建活動的方方面面,尤其強調提高軟件質量的種種實踐方法。作者特別注重源代碼的可讀性,詳細討論了類和函數命名、變量命名、數據類型和控制結構、代碼布局等編程的最基本要素,也討論了防御式編程、表驅動法、協同構建、開發者測試、性能優化等有效開發實踐,這些都服務於軟件的首要技術使命:管理復雜度。

為了培養程序員編寫高質量代碼的習慣,書中展示了大量高質量代碼示例。此外,本書還歸納總結了來自專家的經驗、業界研究及學術成果,列舉了大量軟件開發領域的真實案例與統計數據。書中所論述的技術不僅填補了初級與高級編程實踐之間的空白,而且為程序員們提供了一個有關軟件開發技術的信息來源。本書對經驗豐富的程序員、技術帶頭人、自學的程序員及沒有太多編程經驗的學生都是大有裨益的。

Steve McConnell被公認為軟件開發社區中的首要作者和發言人之一。他是Construx Software 公司的首席軟件工程師。他所編著的圖書包括曾被《Software Development》雜志授予優異產品震撼大獎(Jolt Award for product excellence)的《代碼大全》(《Code Complete》)和《快速軟件開發》(《Rapid Development》),以及《 軟件項目生存指南》(《Software Project Survival Guide》)和《專業軟件開發》(《Professional Software Development》)等。
 

目錄

前言
致謝
核對清單
表目錄
圖目錄

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
 

普通的軟件工程實踐與最優秀的軟件實踐差距巨大——多半比其他工程學科中的這種差距都要大。因此,傳播優秀實踐經驗的工具是十分重要的。
網路書店 類別 折扣 價格
  1. 新書
    $888