A Highly Maintainable Design is a Key for coding

If we get used to the OOP, we know that it often mentioned the concept about "Reusable", actually that bring different layers of meanings about software design, one could be, if it‘s reusable, then we will be able to use it in new software with less effort.

I think the real problem for a coder, is that, we have developed some software, and changes always happened, whatever it‘s a upgrade, a new feature request, or sometimes we move it for another use, we will have to change it for that case.

To change existing codebase, could be a nightmare, if it‘s complex due to a large amount of code, or bad design. The reason is quite simple, if the code isn‘t well designed for maintenance or flexible enough for different use, then changing the codebase, could break the logic of the system design, thus it will bring more uncertainty of it, usually means more bugs. Because of the uncertainty, we could trap in the bug loop, fixed one, brought another, and forever, the worst is, the whole changes bring the software to a wrong direction, eventually to fix it isn‘t an option for cost.

As a coder, I really dislike to waste time on maintain codebase when it‘s bad for maintenance, it‘s like someone is pushing you into a puzzle map, you just see a bit clue around you, but never get to know the whole picture of it, the long time lonely walk certainly will kill our patience, especially when someone is there call us out, and whipping us into a stressful state for reporting progress. Unfortunately, that usually happened as what a project owner cared is the progress, progress means cost, cost means money, now we know why.

But as a coder, to write a software, we take the maintainability to be the first case of all, could help us to write better software, maintainability isn‘t really as same as "Reusability", as maintainability is all about the caring of ourselves, its more like a special healthy care insurance for coders, if we have it done, we will be benefit on it for a long time.

Also to write a better maintainable software, is also pushing you to think it more, and choose a better solution, could forcibly bring your speeding race slow down, having a cup of tea, ease your mind, and then focusing on the problem, get the solution, it will increase your lifespan, seriously, we all know a high speed spinning gear will be less lifespan, so do our organs.

There could be a lot different ways to write a better maintainable software, whatever its OO, or not OO, the key is, thinking more about it.

To have fun with it, I considered how to maintain a database design more easily, and I wrote a small NodeJs code to generate SQL from OOD style description of database design. Take a look, it might still work or not.

The idea is to use plain text to describe the database table and its relationship by OO methodology, and generate different SQL create scripts for different SQL server.

https://github.com/hellomaya/db-test/tree/master/oosql

时间: 2024-08-11 01:35:25

A Highly Maintainable Design is a Key for coding的相关文章

xcode KVC:Key Value Coding 键值编码

赋值 // 能修改私有成员变量 - (void)setValue:(id)value forKey:(NSString *)key; - (void)setValue:(id)value forKeyPath:(NSString *)keyPath; - (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues; 取值 // 能取得私有成员变量的值 - (id)valueForKey:(NSString *)key; - (

微软职位内部推荐-Software Development Engineer

微软近期Open的职位: Job title: Software Development EngineerLocation: Beijing, China Are you a talented developer who is passionate about mobile devices and ready to join the task force team helping OEMs commercializing millions of Windows devices? Do you w

Domain Driven Design and Development In Practice--转载

原文地址:http://www.infoq.com/articles/ddd-in-practice Background Domain Driven Design (DDD) is about mapping business domain concepts into software artifacts. Most of the writings and articles on this topic have been based on Eric Evans' book "Domain Dr

A web crawler design for data mining

Abstract The content of the web has increasingly become a focus for academic research. Computer programs are needed in order to conduct any large-scale processing of web pages, requiring the use of a web crawler at some stage in order to fetch the pa

Haproxy Configure File

---------------------- HAProxy Configuration Manual ---------------------- version 1.5.11 willy tarreau 2015/02/01 This document covers the configuration language as implemented in the versionspecified above. It does not provide any hint, example or

Software architecture vs code

Software architecture vs code I presented two talks last week with the title "Software architecture vs code" - first as the opening keynote for the inaugural Software Design and Development conference and also the next day as a regular conferenc

30个HTML初学者建议

The most difficult aspect of running Nettuts+ is accounting for so many different skill levels. If we post too many advanced tutorials, our beginner audience won’t benefit. The same holds true for the opposite. We do our best, but always feel free to

关于CSS需要知道的10件事

原文: http://dsheiko.com/weblog/10-things-to-need-to-know-about-css CSS may look as a simple language. In fact it can be simple only to use, but definitely not simple to maintain. CSS看起来是个简单的语言,实际上只是使用较为简单,但是很显然维护它并不简单. Observing that the maximum numbe

Top 5 Code Smells Newbies Developers Could Easily Identify & Avoid

Posted by Ajitesh Kumar / In Freshers, Software Quality / February 1, 2014 Following is one very popular image which has been used to represent time and again for representing code smells. I am doing it again. Apologies if this one is repeat for some