你会比我做的更好!

TR@SOE 2008-12-09 05:00:07
好吧,我知道我的水平不高,回答问题也不够“友好”,更不会给出“答案”——代码。可是,这不妨碍我说两句。

===================

不说远的。2006年年底,经过一次失败的跳槽,我只能选择赋闲在家。期间,和一位朋友合伙搞点SOHO的小生意,并且完成了一个项目。

如果说,对PHP的掌握100分是满分的话,我现在大概可以腆着脸说有个60分,但是在当时,只有可怜的10分……

现在回头看那些代码,真的是不忍卒读:没有MVC,没有防止SQL注入,模块划分混乱……但是在这个项目中,我们实现了i18n,条件组合查询+过滤,在不敢用PEAR的前提下实现了通用的分页+跳转函数,SEO,基于Flash的音频录制和上传、通过SVN+Trac进行代码管理……等功能。这些功能,即使放到现在,可能也还困惑着好多开发者吧?

那么是什么促使我们那么“勇敢”的去做这个项目呢?当然,需要钱花是最基本的原因。不过,对自己的信心还是起了很重要的作用。

我认为,我和我的搭档的信心来自这么几点:

一、英语水平。英语水平好就意味着可以看到原汁原味的技术文档。而且,我们不能不承认,目前这个编程的世界,还是一个E文当道的世界。论坛中经常有网友会说:我E文不好,看不懂E文。于是他就只有两个选择:要么等对应的、相关的中文文档出台;要么就提问。看原始的英文技术文档其实并不很难。我个人曾经翻译过Smarty和CSS2的技术文档,所用到的英文知识只是我所掌握的皮毛而已。所以,千万不要有这样的畏惧心理。

如今,各种翻译工具很是盛行。但是我不建议用翻译工具进行整段翻译。在具有上下文的前提下,一些特定单词的不理解不会影响整个文章段落的理解。更何况,技术文档不是诺贝尔文学奖作品,文采不是主要的考量,严谨才是风格。

二、别的语言的基础。在进行PHP开发之前,我是以C/C++起步,结合Delphi开发的。我个人并不推荐用PHP作为入门的编程语言,因为它太灵活(当然,Python更灵活)、太松散。我还是建议从C/C++开始,找一两本简明易懂的书看看,写一两个算法检验自己的学习效果就可以了。太高深的书,是给那些专门要用C/C++开发的人看的。

当然,还有数据库的知识也是很重要的。我个人写过一本关于InterBase的书,所以自认对这个还算有了解。良好的数据库设计,可以避免很多日后的困难。你会发现,在一个设计良好的数据库下写SQL代码是一件非常享受的事情。

三、最重要的是,一个良好的分析、学习的循环。我很少在CSDN放技术分。我放了大概24000分基本都是“水”分。而我放的技术分都可耻的没有满意的回答。

分析问题的能力是很重要的。而这个能力又有两个意义。

首先,在项目初期是分析项目的能力。一个项目,其关键点在哪里?在我掌握(知道)的范围内,可以用哪些技术实现,或者还有哪些不能实现?不能实现的部分,是否可以“让步”——退而求其次?如果不能,那么需要什么新的技术?新的技术又有什么地方是比较困难的?是否要搭建骨架代码?骨架代码又要测试哪些关键技术?……

其次,是在开发过程中的调试出错能力。在我刚开始开发程序的时候,我是用过Turbo Debugger的,所以我知道调试有多重要,并且更知道会调试有多重要。一个错误出现后,需要去分析。数据的输入、处理、输出是否有问题?一个简单的拼写错误,例如将$conn拼写为$coon就可能引起数据库连接出错,而这样的问题是完全可以自己解决而不需要在CSDN里提问的。

当然,最好的情况下,我们有专业的IDE帮助我们进行调试,或者甚至引入单元测试等专门的框架来测试。但是即使用Notepad编写PHP,即使100%不使用第三方测试工具,也可以通过很多简单而有效的方法来帮助我们调试。例如,臭名昭著的:mysql_fetch_row(): supplied argument is not a valid mysql result resource错误其实在很多情况下是很容易被调试出来的:

1. 首先我会看对应的$res。既然出这个错,它必定是错的;
2. 然后我看这个$res对应的类似mysql_query($sql)这样的语句,重点是排查那个$sql中提供的SQL语句,我会简单的用echo的方式将最终进入mysql_query的SQL语句打印出来看看,并且在大部分情况下将这个SQL语句带到PHPMyAdmin中进行实地测试,如果在PMA中没有问题,那么显然在PHP中调用也不应该有问题;
3. 如果$sql没有问题,那么很显然,问题必然出现在$cn上,也就是MySQL的连接就出错了。那么通常可以看到的回答不外乎:检查服务器、用户名、密码、使用的数据库……
4. 如果这些也都没有问题,那么就要看MySQL服务器是否启动?是否授权该用户访问?(顺便说一下,我很反对用root来访问所有数据库)甚至,这个MySQL服务器是否侦听了你所要访问的IP和端口?
5. 最后的这些问题已经超出了PHP编程的范围,而属于Apache/PHP/MySQL的配置问题了。在这些情况下,我会看PHP中MySQL扩展是否已经打开?通过命令行或者PMA能否能接到服务器?

如果在碰到这个错误时,能按照这个思路去调试,我想99%的情况下到第二步时就已经解决了。而如果真正需要到了第“六”步,去CSDN提问恐怕也就没有什么用了。

1年前,我捣鼓我自己的站点的时候,我还对ajax很畏惧;6个月后,我用XAJAX实现了部分ajax效果,但是我还不会给我的一个div加上动画消隐等效果;最近我在看jQuery,才知道这样的动画效果实在不算什么。这个过程就是我自己不断学习、进步的过程……我在尝试将我之前用XAJAX完成的例子全部改写到jQuery,而在这个过程中,我依赖的就是官方文档、对JavaScript的理解和自己钻研分析的能力。

我不是一个专业的编程人员。我的职业是工业房地产开发和管理。编程一直是我的业余爱好。

BTW,如果你有项目方面的问题,我会很乐意给出我的建议,报酬面议……

你一定能比我做的更好!
...全文
131 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huzhangyou 2008-12-21
  • 打赏
  • 举报
回复
呵呵
N个月没有来CSDN 了
来看看你 呵呵

写的非常好
TR@SOE 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cyxin2121921 的回复:]
支持楼主
也很同情楼主
我听过一个朋友说过这么一句话 就是 当一个人一但把自己的业余爱好做成了自己的职业 会很苦
不知道这句话 对不对

[/Quote]
还好,我还是把编程作为业余爱好来处理的……
ugxxx 2008-12-10
  • 打赏
  • 举报
回复
经验之谈... 谢谢
hzcenter 2008-12-10
  • 打赏
  • 举报
回复
lz不错,这才是真正的长经验
dzxccsu 2008-12-10
  • 打赏
  • 举报
回复
经验之谈拉,学习拉!
cyxin2121921 2008-12-10
  • 打赏
  • 举报
回复
支持楼主
也很同情楼主
我听过一个朋友说过这么一句话 就是 当一个人一但把自己的业余爱好做成了自己的职业 会很苦
不知道这句话 对不对
Zijian_Zhang 2008-12-09
  • 打赏
  • 举报
回复
支持楼主,一个好贴
海诗美妆 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 TR@SOE 的回复:]
引用 1 楼 froole 的回复:
lz也用interbase,
我曾经非常喜欢Firebird!


感觉最近php版好贴很多,
班竹该来管理管理,该加精的加精!


我的个人网站中藏书部分目前还是在InterBase下运行……
[/Quote]
给个地址!
TR@SOE 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 froole 的回复:]
lz也用interbase,
我曾经非常喜欢Firebird!


感觉最近php版好贴很多,
班竹该来管理管理,该加精的加精!
[/Quote]

我的个人网站中藏书部分目前还是在InterBase下运行……
jlzan1314 2008-12-09
  • 打赏
  • 举报
回复
看完了.顶个.都是经验之谈啊.
penglewen 2008-12-09
  • 打赏
  • 举报
回复
好贴。。下班前看后了。。支持下。
wjdlt_1997 2008-12-09
  • 打赏
  • 举报
回复
阿弥陀佛
海诗美妆 2008-12-09
  • 打赏
  • 举报
回复
lz也用interbase,
我曾经非常喜欢Firebird!


感觉最近php版好贴很多,
班竹该来管理管理,该加精的加精!

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧