c++ java unit testing tdd functional programming software architecture design patterns agile refactoring c pdsa object-oriented programming code good unit tests coding guidelines algol 68 programming by contract stl unit tests programming style ruby groovy procedural programming nunit c# pipelines immutability junit interfaces programming convention idioms testing value types strings c++98 learning fortran programming languages python software craftsmanship empirical uncertainty guts business value closures computer science alonzo church church numerals lambda calculus lambdas sicp haskell javascript catch development alcubierre drive threading concurrency complexity software development performance scrum leftpad solid principles not so solid declarative programming property-based tests coding katas abstraction example-based tests bugs defects object equality strict ordering naming preconditions postconditions requirements testability polymorphism oo streams algorithms exception safety raii iso c++ history smalltalk cobol programming paradigms programmer experience px patterns agile development clean code programmer testing ocp lsp lean incremental technical neglect technical debt technical excellence knowledge estimation physics prioritisation scheme simula 67 compassion dispassion passion software dependency-inversion principle interface-segregation principle liskov substitution principle open-closed principle single-responsibility principle cohesión simula pythagoras bash awk sed clojure modula-2 coordination languages top-down decomposition structured programming given-when-then state modelling scale collective intelligence ooda conway speed velocity quality software testing use cases user stories bdd intention-revealing names identifier naming verbosity enterprise coding code quality development practice values actors channels amdahl's law persistent data structures asynchrony locks futures vulnerabilities injection attacks spoofing security heartbleed goto fail configuration errors details semantics panster success failure cognitive biases fun games nomic plotter facebook software failures spe programs trump austerity schiaparelli knight capital uber filter bubble ariane brexit climate denialism gigo spreadsheets a/b testing coding habits coding style iconoclastic isp object orientation srp best practices dip adt encapsulation csp roles autognosis oop test-driven development knowledge work feedback feedforward design empiricism enbugging debugging floating-point numbers object equivalence nan three-way comparison assertions malloc logic realloc condition strength cohesion free usage api design balance symmetry alignment style objects problem frames object classification comments design by contract sorting functional contracts operational contracts operational requirements functional requirements non-functional requirements namespace generic programming generalisation string handling basic_string bitsets enums memory-efficient sorted containers container indexing lazy instantiation sparse containers dependency management source code decoupling parametric polymorphism templates iterators coercion polymorphism overloading polymorphism inclusion polymorphism boost programming language standards wg21 more software less code transfer of ownership move semantics scoped ownership policy-based design exception handling modern c++ xp xp day legacy ada pl/1 basic pascal enterprise star trek fizzbuzz cognition habitability art programming programmer biases accu test style development practices heterarchy systems hierarchy programming advice fizz buzz coding smells practice coding guidelines change options thinking ndc 2014 design patterns ndc 2014 code habits style
Ver mais