Coding design attitudes

From Helpful
Revision as of 16:52, 14 July 2023 by Helpful (talk | contribs)
Jump to navigation Jump to search
Some fragmented programming-related notes, not meant as introduction or tutorial

Data: Numbers in computers ·· Computer dates and times ·· Data structures

Wider abstractions: Programming language typology and glossary · Generics and templating ·· Some abstractions around programming · · Computational complexity theory notes · Synchronous, asynchronous · First-class citizen

Syntaxy abstractions: Constness · Memory aliasing · Binding, assignment, and such · Closures · Context manager · Garbage collection

Sharing stuff: Communicated state and calls · Locking, data versioning, concurrency, and larger-scale computing notes

Language specific: Python notes ·· C and C++ notes · Compiling and linking ·· Lua notes

Teams and products: Programming in teams, working on larger systems, keeping code healthy · Benchmarking, performance testing, load testing, stress testing, etc. · Maintainability

More applied notes: Optimized number crunching · File polling, event notification · Webdev · GUI toolkit notes

Mechanics of duct taping software together: Automation, remote management, configuration management · Build tool notes · Installers


People like acronyms

DRY

Don't Repeat Yourself.


Functions are good to avoid repeating code.


OO classes are good to also avoid repeating state management. (if not as automatically good at encapsulation as we like to pretend they are, but that's practice to be a very real problem in, not nice abstracted acronyms)


YAGNI

You Aren't Gonna Need It basically says "don't add functionality until you actually need it"


Can apply to design as well as code.



SOLID

GRASP

On premature optimization