由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 如何写坚实的代码?
相关主题
觉得自己写的代码很不professional你身边有这样的人吗?--- code stylist
谁说做开发没趣味?!写Java程序不用IDE,那心灵得多强大啊
求从 Python 代码产生 call graph 的工具FP的教材是怎么误导人的
github上面的代码和公司的代码对PyCharm屈服了……
大家每年给公司check in大概多少行的代码?一个c++ constructor的问题, thanks
[吐槽]抽象真是不一定好中国盗版软件大王李翔在美认罪 (转载)
Refactoring long class step by step (1)产品或者项目都是怎么命名的
C++ IDE under Linux叫个毛啊,本来互联网都是泡沫 (转载)
相关话题的讨论汇总
话题: code话题: 代码话题: bugs话题: coupling
进入Programming版参与讨论
1 (共1页)
r*******n
发帖数: 3020
1
做软件产品最重要的是软件运行强健,
所以写代码考虑多种可能的情况,
而这个又很靠经验。
大家能不能谈这方面的经验。
g*****g
发帖数: 34805
2
Unit test and refactoring, you may use generated UML to see
if there's unnecessary coupling. Generally, I would be more
concerned about bad coupling than bugs. If you code is well
structured, it's easy to fix bugs, when it's not, it can be
difficult and bring new bugs in your fix. That's why I like
refactoring if I smell something bad even when there's no bug.

【在 r*******n 的大作中提到】
: 做软件产品最重要的是软件运行强健,
: 所以写代码考虑多种可能的情况,
: 而这个又很靠经验。
: 大家能不能谈这方面的经验。

a****l
发帖数: 8211
3
1.不赶时间,不熬夜.
2.仔细干,多画图,多思考,多实验,多查资料,不要老想着直接码代码出程序.
3.不要玩技巧,老实的写简单的程序.不要写那种用来做考题的希奇古怪的语法组合.

【在 r*******n 的大作中提到】
: 做软件产品最重要的是软件运行强健,
: 所以写代码考虑多种可能的情况,
: 而这个又很靠经验。
: 大家能不能谈这方面的经验。

X****r
发帖数: 3557
4
个人看法:
1.想好了再写。先确定设计和接口再具体实现。设计和接口注意一定的通用性和扩展性
。实现的时候注意封装而不要抄近路。当你感到有迫切的抄近路的需求的时候多半说明
你的设计有问题。随着代码的发展和需求的变化原来的设计和接口一定会过时,所以要
有重构(refactoring)是开发中的常态的准备。
2.测试,测试,测试!从单元测试到集成测试,都要自动化,并且覆盖面尽可能得广。
测试是软件质量的第一道也是最后一道防线。
3.Code defensively(不知道中文怎么说)。首先是代码单元(比如函数和方法)必须
完全实现所宣示的功能而不依赖于额外的假设,比如按一定格式输出一个数,如果这个例程
没有声明只接受一定范围的数的话(除非有这样的必要,不然一般也不应该有这样的声
明),即使在当前的程序里这个数不可能超出这个范围也不要依赖于这个条件。更进一步
的,即使输入不完全符合接口,根据情况也可以考虑尽可能地完成操作,不过这种情况下要
留下记录,而且未必适合所有情况。
4.代码的可读性也很重要。没有比改一段自己还不太明白的代码更容易造成隐患的了。

【在 r*******n 的大作中提到】
: 做软件产品最重要的是软件运行强健,
: 所以写代码考虑多种可能的情况,
: 而这个又很靠经验。
: 大家能不能谈这方面的经验。

m*****r
发帖数: 130
5
我觉得看看成熟的好代码比较好,coding是个很灵活的东西,好的设计可以减少各个模
块间的耦合,好
的coder能很好实现每个模块,这算是大的方面的2点。
这个我觉得还和个人的追求有关,有的人糊弄事,有的人精益求精。

【在 r*******n 的大作中提到】
: 做软件产品最重要的是软件运行强健,
: 所以写代码考虑多种可能的情况,
: 而这个又很靠经验。
: 大家能不能谈这方面的经验。

r*******n
发帖数: 3020
6
could you pls give a simple example you smell bad?

【在 g*****g 的大作中提到】
: Unit test and refactoring, you may use generated UML to see
: if there's unnecessary coupling. Generally, I would be more
: concerned about bad coupling than bugs. If you code is well
: structured, it's easy to fix bugs, when it's not, it can be
: difficult and bring new bugs in your fix. That's why I like
: refactoring if I smell something bad even when there's no bug.

g*****g
发帖数: 34805
7
Addison Wesley - Refactoring Improving the Design of Existing Code
You can check this book for examples. I can't sum up better.

【在 r*******n 的大作中提到】
: could you pls give a simple example you smell bad?
r*******n
发帖数: 3020
8
关于2里的“多查资料”是指查哪方面?业务逻辑方面?
我觉得查资料是耗时多,不好控制进度的重要原因。

【在 a****l 的大作中提到】
: 1.不赶时间,不熬夜.
: 2.仔细干,多画图,多思考,多实验,多查资料,不要老想着直接码代码出程序.
: 3.不要玩技巧,老实的写简单的程序.不要写那种用来做考题的希奇古怪的语法组合.

r*******n
发帖数: 3020
9
Thanks

【在 g*****g 的大作中提到】
: Addison Wesley - Refactoring Improving the Design of Existing Code
: You can check this book for examples. I can't sum up better.

g*****g
发帖数: 34805
10
Actually I kind of oppose this, not saying you shouldn't
try to know about business logic before you proceed. But
I like to go down to details only when necessary, and I
like test driven approach that you can have short iteration
and visible milestone and others can be involved in testing
early, this is a principle in all agile methodologies.

【在 r*******n 的大作中提到】
: 关于2里的“多查资料”是指查哪方面?业务逻辑方面?
: 我觉得查资料是耗时多,不好控制进度的重要原因。

相关主题
[吐槽]抽象真是不一定好你身边有这样的人吗?--- code stylist
Refactoring long class step by step (1)写Java程序不用IDE,那心灵得多强大啊
C++ IDE under LinuxFP的教材是怎么误导人的
进入Programming版参与讨论
r*******n
发帖数: 3020
11
还是关于查资料,
比如 客户要求加入新的功能,而我又不确信能做,
需要查资料,甚至要写一点测试代码,
那这个时间怎么算?
或者说合同里没有直接拒绝,或作为下一个版本功能。

【在 g*****g 的大作中提到】
: Actually I kind of oppose this, not saying you shouldn't
: try to know about business logic before you proceed. But
: I like to go down to details only when necessary, and I
: like test driven approach that you can have short iteration
: and visible milestone and others can be involved in testing
: early, this is a principle in all agile methodologies.

x****u
发帖数: 44466
12
顶这个,强烈同意。

【在 a****l 的大作中提到】
: 1.不赶时间,不熬夜.
: 2.仔细干,多画图,多思考,多实验,多查资料,不要老想着直接码代码出程序.
: 3.不要玩技巧,老实的写简单的程序.不要写那种用来做考题的希奇古怪的语法组合.

o******r
发帖数: 259
13
4.3.2.1

个例程

【在 X****r 的大作中提到】
: 个人看法:
: 1.想好了再写。先确定设计和接口再具体实现。设计和接口注意一定的通用性和扩展性
: 。实现的时候注意封装而不要抄近路。当你感到有迫切的抄近路的需求的时候多半说明
: 你的设计有问题。随着代码的发展和需求的变化原来的设计和接口一定会过时,所以要
: 有重构(refactoring)是开发中的常态的准备。
: 2.测试,测试,测试!从单元测试到集成测试,都要自动化,并且覆盖面尽可能得广。
: 测试是软件质量的第一道也是最后一道防线。
: 3.Code defensively(不知道中文怎么说)。首先是代码单元(比如函数和方法)必须
: 完全实现所宣示的功能而不依赖于额外的假设,比如按一定格式输出一个数,如果这个例程
: 没有声明只接受一定范围的数的话(除非有这样的必要,不然一般也不应该有这样的声

l******e
发帖数: 12192
14
three points: design, boundary check, QA

【在 r*******n 的大作中提到】
: 做软件产品最重要的是软件运行强健,
: 所以写代码考虑多种可能的情况,
: 而这个又很靠经验。
: 大家能不能谈这方面的经验。

s*****g
发帖数: 5159
15
写两遍。

【在 r*******n 的大作中提到】
: 做软件产品最重要的是软件运行强健,
: 所以写代码考虑多种可能的情况,
: 而这个又很靠经验。
: 大家能不能谈这方面的经验。

O*******d
发帖数: 20343
16
I recommend these books. The books talk about how to make your code more robust, easy to maintain, easy to expand.
Writing Solid Code
http://www.amazon.com/Writing-Solid-Code-Microsofts-Programming/dp/1556155514#reader
Code Complete
http://www.amazon.com/Complete-Microsoft-Programming-Steve-McConnell/dp/1556154844
1 (共1页)
进入Programming版参与讨论
相关主题
叫个毛啊,本来互联网都是泡沫 (转载)大家每年给公司check in大概多少行的代码?
predictive analysis只能用来prediction吧?[吐槽]抽象真是不一定好
到哪搞清楚点的design patterns UML diagrams?Refactoring long class step by step (1)
Re: c++ design pattern 一问C++ IDE under Linux
觉得自己写的代码很不professional你身边有这样的人吗?--- code stylist
谁说做开发没趣味?!写Java程序不用IDE,那心灵得多强大啊
求从 Python 代码产生 call graph 的工具FP的教材是怎么误导人的
github上面的代码和公司的代码对PyCharm屈服了……
相关话题的讨论汇总
话题: code话题: 代码话题: bugs话题: coupling