Cargando…

Hands-on software engineering with Golang : move beyond basic programming to design and build reliable software with clean code /

This book distills the industry's best practices for writing lean Go code that is easy to test and maintain and explores their practical application on Links 'R' US: an example project that crawls web-pages and applies the PageRank algorithm to assign an importance score to each one.

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: Anagnostopoulos, Achilleas (Autor)
Formato: Electrónico eBook
Idioma:Inglés
Publicado: Birmingham, UK : Packt Publishing, 2020.
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)
Tabla de Contenidos:
  • Intro
  • Title Page
  • Copyright and Credits
  • Dedication
  • About Packt
  • Contributors
  • Table of Contents
  • Preface
  • Section 1: Software Engineering and the Software Development Life Cycle
  • Chapter 1: A Bird's-Eye View of Software Engineering
  • What is software engineering?
  • Types of software engineering roles
  • The role of the software engineer (SWE)
  • The role of the software development engineer in test (SDET)
  • The role of the site reliability engineer (SRE)
  • The role of the release engineer (RE)
  • The role of the system architect
  • A list of software development models that all engineers should know
  • Waterfall
  • Iterative enhancement
  • Spiral
  • Agile
  • Lean
  • Eliminate waste
  • Create knowledge
  • Defer commitment
  • Build in quality
  • Deliver fast
  • Respect and empower people
  • See and optimize the whole
  • Scrum
  • Scrum roles
  • Essential Scrum events
  • Kanban
  • DevOps
  • The CAMS model
  • The three ways model
  • Summary
  • Questions
  • Further reading
  • Section 2: Best Practices for Maintainable and Testable Go Code
  • Chapter 2: Best Practices for Writing Clean and Maintainable Go Code
  • The SOLID principles of object-oriented design
  • Single responsibility
  • Open/closed principle
  • Liskov substitution
  • Interface segregation
  • Dependency inversion
  • Applying the SOLID principles
  • Organizing code into packages
  • Naming conventions for Go packages
  • Circular dependencies
  • Breaking circular dependencies via implicit interfaces
  • Sometimes, code repetition is not a bad idea!
  • Tips and tools for writing lean and easy-to-maintain Go code
  • Optimizing function implementations for readability
  • Variable naming conventions
  • Using Go interfaces effectively
  • Zero values are your friends
  • Using tools to analyze and manipulate Go programs
  • Taking care of formatting and imports (gofmt, goimports)
  • Refactoring code across packages (gorename, gomvpkg, fix)
  • Improving code quality metrics with the help of linters
  • Summary
  • Questions
  • Further reading
  • Chapter 3: Dependency Management
  • What's all the fuss about software versioning?
  • Semantic versioning
  • Comparing semantic versions
  • Applying semantic versioning to Go packages
  • Managing the source code for multiple package versions
  • Single repository with versioned folders
  • Single repository
  • multiple branches
  • Vendoring
  • the good, the bad, and the ugly
  • Benefits of vendoring dependencies
  • Is vendoring always a good idea?
  • Strategies and tools for vendoring dependencies
  • The dep tool
  • The Gopkg.toml file
  • The Gopkg.lock file
  • Go modules
  • the way forward
  • Fork packages
  • Summary
  • Questions
  • Further reading
  • Chapter 4: The Art of Testing
  • Technical requirements
  • Unit testing
  • Mocks, stubs, fakes, and spies
  • commonalities and differences
  • Stubs and spies!
  • Mocks
  • Introducing gomock