13 Simple Rules for Good Coding (from my 15 years of experience) - By



13 Simple Rules for Good Coding (from my 15 years of experience) - By

Andrey Nikishaev

@a.nikishaev

13 Simple Rules for Good Coding (from my 15 years of experience)

January 9th 2017

Hi guys, i work as a programmer more than 15 years and was using many different languages, paradigms, frameworks and other shit. And i want to share with you my rules of writing good code.

  1. Optimization VS Readability. Fuck the optimization. 
    Always write code that simple to read and which will be understandable for developers. Because time and resources that will be spent on hard readable code will be much higher than what you get from optimization.
    If you need to make optimization, then make it like independent module with DI, with 100% test coverage and which will not be touched for at least one year.
  2. Architecture first. 
    I saw many people who was saying "We need doing things fast we have no time on making architecture". And about 99% of them got big problems because of such thinking.
    Writing code without thinking of its architecture is useless in the same way as dreaming about your desires without a plan of achieving them.
    Before writing the first line of the code, you should understand what it will be doing, how, what it will use, how modules, services will work with each other, what structure will it have, how it will be tested and debugged, and how it will be updated.
  3. Test coverage. 
    Tests are good thing but they are not always affordable and make sense for the project.
    When you need tests:
    - When you are writing modules, micro-services which will be not touched for at least one month.
    - When you are writing open source code.
    - When you are writing code that touches financial channels.
    - When you have resources for updating tests at the same time as code was updated.
    When you don't need test:
    - When you are a startup.
    - When you have small team and code changing is fast.
    - When you write scripts that can be simply tested manually by their output.
    Remember that code with badly written tests can be more harmful then code without tests.
  4. Keep It Simple, Stupid.
    Don't write complex code. More it simpler then less bugs it may have and less time needed to debug them. Code should do only what it need without tons of abstraction and other OOP shit (especially it concerns java developers) + 20% of things that may be needed in future to update it in simple way.
  5. Comments.
    Comments showing bad code. Good code should be understandable without a line of comments. But what to do to save time for new developers? — Write simple inline documentation describing what and how method work. This will save much time for understanding and even more — it will give people more chances to come up with better implementation of this method. And also it will be good start for global code documentation.
  6. Hard coupled VS Less Coupled.
    Always try to use micro-service architecture. Monolithic software can run faster than micro-service software, but only in the context of one server.
    Micro-services give you possibility to distribute your soft efficiently not only on many servers but sometimes even on one machine(i mean process distribution).

Read full article from 13 Simple Rules for Good Coding (from my 15 years of experience) - By


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts