写程序非得要按照相对应的逻辑来写吗?

2015-08-27 07:35:46 +08:00
 soratadori

举个例子,假如有一个文本里面的内容是严谨的数据结构,可能是 json 、 xml ……也可能是其他的配置格式。如果对其操作的话,有没有必要完全模拟这种结构来写一个相对应的解析程序?如果使用一些技巧(如正则表达式)来操作的话,不仅可读性强,代码还十分短小。

再比如设计一个门电路,通过某些技巧进行操作就比死板的按照逻辑来设计要高效的多。

不考虑程序效率问题的话,有必要一定按照相对应的逻辑来写吗

4274 次点击
所在节点    程序员
30 条回复
WispZhan
2015-08-27 16:03:15 +08:00
楼主 这理论完全 可以套到 另一个问题里: “写项目非得要按照软件工程里对应的开发方法来管理吗?” 这种问题。

连答案都是一样的。
ijse
2015-08-27 16:39:25 +08:00
之前 有遇到一个需求是要修改 xml 文件,我把 xml 文件当成普通的模板文件来处理,而不是通过 xml 对象来生成,于是整个过程就变得更加简单、高效和方便了。
imn1
2015-08-27 17:31:04 +08:00
@abscon
“诗”只是代替某位 C 开头的 V 友,可能我写得太“诗意”了

看到“ open tags ”我就没点进去,没挂科学工具,上去比较麻烦,但大致能猜到,应该说的是一些有开头懒得写结尾而没有闭合的 tags ,例如<option>之类, 08 年就见过这样的争论,我 06 年就遇到,刚开始我也很头疼,某位洋人(抱歉我这人记名字有点困难) 08 年左右点醒了我,他说 regex 不是找节点,而是找子字符串,这才是实质

DOM 和 regex 其实是两种思维方式, DOM 是演绎法,从 root 节点通过类似 xpath 一个一个“理论推导”找到所需; regex 是归纳法,没有 node 的概念,整个 json/xml/html 就是一个大字符串,找到符合特征的全部,如果特征越细致明显,全部将越可能变成“唯一”

找某段文字,有人会记“第几章第几节第几段”,因为这样不但自己容易记住,也方便和其他人交流
但我相信不少人是按 Ctrl-F ,输入里面的特定字符直接查找,不理会“第几章第几节第几段”

所以,两种方式不存在对错之分,只是适合自己、适合团队、适合所有人的分别
我并没有回复说写程序就是应该 LZ 那样,因为不知道他写的程序是什么环境,团队合作我不建议他这样做,但他假如只是自用,只需要“自己可读性高”,那就无所谓了
我自己写的爬图就一直用 regex ,至少 08 年至今爬了 2+G (不是字节数)图片没遇到正则解决不了的,反正这程序又不需要和别人交流
akira
2015-08-27 20:10:06 +08:00
看情况呗,如果文件里面的所有内容都是必须要访问的,那干嘛不做完整解析呢。
darluc
2015-08-27 22:03:09 +08:00
只要能把想干的事干了,随便你怎么写
msg7086
2015-08-27 22:58:17 +08:00
正则和解析器,本质上都是自动机……
ipconfiger
2015-08-27 23:01:15 +08:00
有些时候就一个简单的 soap 调用,比如某些什么天气啊的 webservice 访问,就直接把 xml 文件当字符串用了,也就 2 , 3 个要替换的内容,直接 stringformat 就填进去了,一 post 就搞定,别提多简单爽快了。
BGLL
2015-08-27 23:08:23 +08:00
当然是怎么能偷懒怎么来咯,只是分为前期偷懒和后期偷懒罢了,
sablib
2015-08-28 00:21:56 +08:00
竟然有人说正则表达式可读性强。。。。
int64ago
2015-08-28 00:38:21 +08:00
我很纳闷,大多解析库不都是正则写的嘛

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX