当前位置:  编程技术>移动开发
本页文章导读:
    ▪论要不要反复造轮子        论要不要重复造轮子     在程序界有一句话很流行,不要重复造轮子。然而,这句话被滥用了。已经渐渐沦为程序员懒惰的借口。甚至因此而盲目指.........
    ▪ 归藏一些技术博客        收藏一些技术博客! http://jackroomage.iteye.com       Jack's 灵感 ......
    ▪ [转帖]Context种中openFileOutput ()函数的使用       [转帖]Context类中openFileOutput ()函数的使用 函数声明: FileOutputStream openFileOutput (String name, int mode)           name: 用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android会.........

[1]论要不要反复造轮子
    来源: 互联网  发布时间: 2014-02-18
论要不要重复造轮子

    在程序界有一句话很流行,不要重复造轮子。然而,这句话被滥用了。已经渐渐沦为程序员懒惰的借口。甚至因此而盲目指责那些勤奋的人。
    大多数情况下初学者很难分清楚自己是不是在重复造轮子。当我头一次听到这句忠告的时候,我变得异常敏感,在做什么之前都要判断一下是否在造轮子。我跟大多数普通人一样,容易受到他人只言片语的不良影响。事实上很多时候,避免造轮子并不是我的首要目标。我的目标是完成一项任务,任务完成的速度要尽量快,质量要尽量好。而不是去判断自己在不在造轮子。
    使用他人的现成轮子是实现快速任务的一项捷径。然而,并不总是这样子的。重复造轮子的正面是另外一句行话:吃自己的狗食。在涉及到关键技术点的地方,依赖他人的轮子容易造成高风险。高风险的原因在于:第一、它不是你写的。凭借注释和教程获得支持很有限,当需要功能拓展或者定制时,用起这个初期看起来很好的轮子反而变得碍手碍脚了。第二、当依赖轮子程度比较高的时候,那么它容易限制自己的思维。有些功能用轮子很难拓展,我们会推脱说轮子产生限制。反而不去思考这些功能的提出是否合理。第三、轮子可能是个一次性产品,轮子的开发者不愿再花时间维护。轮子不能与时俱进,那么就会被淘汰。因此你的产品也会遭到淘汰。“吃自己的狗食”的优势便是上述情况的反义。善于吃狗食的人,并不满足应用轮子做事,他们也会乐于阅读不同轮子的源码。去粗取精,博采众长。最终写出属于自己的锋利轮子,达到期望的目标。
    除了在关键技术点尽量不要使用他人的轮子。还有重要一点,那就是不要被“重复造轮子”这句话吓怕了。windows有现成的记事本和扫雷,但是每年还是有成千上万的大学生乐此不疲的编写记事本和扫雷程序。更有喜欢折腾的人尝试自己实现红白机上的经典游戏。实践是最好的老师,学生们并不是在重复造轮子,而是以提高为自己的目的。许多开源项目的初始目的并不只是为了做出一件产品,而是为了学习。高手们都明白实践出真知的道理,只是他们实践的技术含量更高而已。所以,千万不要被轮子吓怕,更不要以“轮子”为借口拒绝学习成长。
    上面我说了滥用重复造轮子的几个情况以及他们的危害。现在我想将自己的一点小小心得介绍出来——到底什么时候不要重复造轮子?
    若我有天想去九寨沟旅游,我想要选择租车自驾游,我肯定不需要关心汽车是怎么工作的。汽车对我来说只是个工具,因为我的目标是旅游。情景发生转变时,一切就变得不一样了。假如我是个汽车设计师,我想测试汽车在九寨沟的山路上能否平稳驾驶。那么我不该关心九寨沟的旅游景点有哪些,而应该关心汽车的内部构成怎样,有没有问题,能否改进。
当使用轮子是为了达成一个日常任务,或是以一个工具形态出现的时候。那么请不要重复造轮子,除非为了学习目的。我常常督促自己多多学习一些shell命令,这样可以避免自己写出一堆轮子脚本。同样的,当我有个新奇想法的时候。我常常会上网搜索有没有朋友已经实现,若有的话直接使用现成的轮子即可。如果没有,那么我只有亲力而为,自己去实现。
    有时候我会突然兴冲冲的充满野心。用数据库用的很不爽,不是说“吃自己的狗食”吗?那么把它写出来吧!当然最后一筹莫展,因为这对我来说太难了。也许我花上三五年时间都没法彻底搞懂。同样的还有写个操作系统、写个语言。这些东西也许最佳应亲力而为,但如果它对于自己来说过于复杂,那么就用它吧。因为这别无选择。优秀的程序员不会乐于被这些困难的东西牵着鼻子走,他们会尝试消化并改善它们。
    除了遇见这些困难的东西,有时候还会碰到一些并不困难但是很占时间的东西。没有必要盲目开工写这些占时间的东西。在仔细分析已有的几种轮子后可以直接选择其中最优秀的,在它不能合适工作的时候就大刀阔斧的修改它。这其中的关键之处在于你明白轮子工作的原理,如果愿意,只要花上几个月的时间,你能重新写出一个来。
    市面上有很多同类产品。明明有肯德基,为什么还出来麦当劳、李先生之类的。有时我会为开发产品的“山寨”而耿耿于怀,这无疑是重复造轮子的行为。别人已经有了,为什么我还要做?几乎同样的逻辑,为什么要重复实现一遍?这的确是重复造轮子,但是这是必要的。原因有:1.虽然产品形态和使用技术类似,但是后台的资源是不同的。用户需要不同的轮子,这样可以使市场有活力。肯德基和麦当劳虽然都是快餐店,经营方式和食品类型也差不多。但总有些微差异,而正是这份差异带来了活力。2.平台化、纵向发展。TX老是被网民骂抄袭,但是似乎越骂用户量反而越高了。因为TX造轮子有深厚的商业目的,它希望做出一个整合一切的平台。统一的平台给资源聚合带来了巨大的好处,用户也会变得更加喜欢用这个简单好用的整合平台。这种造轮子行为从这个角度上说是非常有利的。

1 楼 Technoboy 2011-11-11  
coding要有自己的见解。不看轮子看coding

    
[2] 归藏一些技术博客
    来源: 互联网  发布时间: 2014-02-18
收藏一些技术博客!
http://jackroomage.iteye.com       Jack's 灵感

    
[3] [转帖]Context种中openFileOutput ()函数的使用
    来源: 互联网  发布时间: 2014-02-18
[转帖]Context类中openFileOutput ()函数的使用

函数声明:

FileOutputStream openFileOutput (String name, int mode) 

 

 

 

 

 

name:

用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android会自动创建它。创建的文件保存在/data/data/<package name>/files/目录中。如:/data/data/GH.Test/files/abc.txt

 mode取值:
MODE_APPEND 私有(只有创建此文件的程序能够使用,其他应用程序不能访问),在原有内容基础上增加数据
MODE_PRIVATE 私有,每次打开文件都会覆盖原来的内容
MODE_WORLD_READABLE 可以被其他应用程序读取
MODE_WORLD_WRITEABLE 可以被其他应用程序写入

另外:

1.FileInputStream openFileInput (String name)

返回文件输入流,用于对文件的读操作。

2. Activity还提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用于获取/data/data/<package name>/cache目录

getFilesDir()方法用于获取/data/data/<package name>/files目录

作用:可以方便地再手机中创建文件,并返回文件输出流,用于对文件做写入操作。

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3