program
program 规范
- 项目搭建每个目录里面都应该包含一个readme.md的文档,表明当前目录是做什么的,当前目录的子目录和子文件的作用。
- 练习也需要规范化,这样后期进行维护查看也很方便。
- 抽时间把例子整理成文章发表到博客园
- 类里面的代码位置顺序 私有字段、属性、构造函数、私有方法、公共方法
-
对于缩写变量的使用,对于比如ID,DNA等缩写,在作为变量的时候还是应该作为单词的形式来拼写合适,拼写为Id,Dna, 或者 xx_id,xx_dna,当然,最重要的还是在同一个程序里面使用同一种命名方式即可。
If you give someone a program, you will frustrate them for a day. If you teach them how to program, you will frustrate them for a lifetime.
中文:如果你给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。
对于数据存储,只管怎么取,不管怎么存
因为计算机存储都是01的数字串,而代表的什么意义则看是怎么取,举个例子:
二进制0010表示十进制2,因此我们可以用0010表示如2个苹果,2个人,长度为2m等等不同的概念,但是存储下来都是0010
如果我不曾为了我们的将来而努力,我那什么来证明我爱你。
程序员应该与程序语言一样,既要有自己的专长,又要向通用化和全能化发展。
我们的第一个观众就是自己。
编程和写作很多情况下,是很相似的工作,首先都是写文字,不过编程主要是英文罢了,其次,都需要思考构思,需要大纲,都要想,写什么,怎么写,从成品来说,写作的成品是给人看,让人有感悟,或感到快乐,感到喜怒哀乐,而编写代码则是让机器读懂,然后按照我们的想法执行罢了,而文章又何尝不是一种代码?只是执行的是我们人罢了。
编程语言只是一种工具,电脑也是一种工具,而这两种工具并不简单的工具,而是人类聚集了近一个世纪的智慧和努力才创造出的这个神奇、强大的工具,是人类先辈们的辛勤努力才获得的,而且其中杰出的人们,我并不能达到他们那种高度,因此也没有他们的那种聪明才智,也许,不,是肯定,在我有生之年,是不可能把所有东西弄懂,但是为什么要把所有的都弄懂呢,贪多嚼不烂,这是真理,所以只需要在某些方面仔细专研就好了,毕竟人生苦短,既然已经有轮子,何必再造呢?一切由心才是正道。任何事情都得有计划才会成功。
如果你想学好编程!就一定要看这个!
如果你想学好编程!就一定要看这个!对无论有多厉害的你有很多帮助! - 中国蓝客联盟
http://www.chnlanker.com/cs/19286.html
此处仅以C#为例,其他编程语言也同样适用。
把C#当成一门新的语言学习;
- 看《C#入门经典》和《C#高级编程》;
- 不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
- 不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点
- 会用Visual vs,并不说明你会C#;
- 学c#并不难,长期坚持实践和不遗余力的博览群书;
- 如果不是天才的话,想学编程就不要想玩游戏!
- 看Visual vs的书,是学不了C#语言的;
- 浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
- 浮躁的人容易问:我到底该学什么;——别问,学就对了;
- 浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
- 浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
- 浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
- 把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
- C#不仅仅是支持面向对象的程序设计语言;
- 学习编程最好的方法之一就是阅读源代码;
- 在任何时刻都不要认为自己手中的书已经足够了;
- 看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
- 别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
- 和别人一起讨论有意义的C#知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
- 请不要认为学过XX语言再改学C#会有什么问题——你只不过又在学一门全新的语言而已;
- 读完了《C#高级编程》以后再来认定自己是不是已经对C#入门了;
- 学习编程的秘诀是:编程,编程,再编程;
- 记住:面向对象技术不只是C#专有的;
- 请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
- 把在书中看到的有意义的例子扩充;
- 请重视C#中的异常处理技术,并将其切实的运用到自己的程序中;
- 经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
- 不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
- C#语言和C#的集成开发环境要同时学习和掌握;
- 既然决定了学C#,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
- 就让C#语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C#语言本身为主;
- 当你写C#程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析
自己的错误并重新设计和编写;
- 决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
- 每学到一个C#难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
- 记录下在和别人交流时发现的自己忽视或不理解的知识点;
- 请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成XX;
- 保存好你写过的所有的程序——那是你最好的积累之一;
- 请不要做浮躁的人;
- 请热爱C#!
编程同写作,写代码只是在码字
编程同写作,写代码只是在码字_知识库_博客园
https://kb.cnblogs.com/page/213197/
We Are Typists First, Programmers Second
https://blog.codinghorror.com/we-are-typists-first-programmers-second/
看到一篇文章《We Are Typists First, Programmers Second》,日期是2008年,好早的一篇文章。当现在打算以一个新人的身份重新进入编程领域,或许是受《重来》的影响,或者只是在重新思考——我们究竟应该如何去编程。
写代码只相当于写字
编程这件事情实际上一点儿也不难,当我们只是在使用一个工具创造一些东西的时候,比如我们拿着电烙铁、芯片、电线等去焊一个电路板的时候,我们学的是如何运用这些工具。虽然最后我们的电路板可以实现相同的功能,但是我们可以一眼看到差距所在。
换个贴切一点的比喻,比如烧菜做饭,对于一个优秀的厨师和一个像我这样的门外汉而言,就算给我们相同的食材、厨具,一段时间后也许一份是诱人的美食,一份只能喂猪了——即使我模仿着厨师的步骤一步步地来,也许看上去会差不多,但是一吃便吃出差距了。
我们还做不好饭,还焊不好电路,还写不好代码,很大程度上并不是因为我们比别人笨,而只是别人比我们做了更多。有时候一种机缘巧遇的学习或者bug的出现,对于不同的人的编程人生都会有不一样的影响(ps:说的好像是蝴蝶效应)。我们只是在使用工具,使用的好与坏,在某种程序上决定了我们写出来的质量。
写字便是如此,给我们同样的纸和笔(ps:减少无关因素),不同的人写出来的字的差距很大,写得好的相比于写得不好的 ,只是因为练习得更多。而编程难道不也是如此么,最后写代码这件事就和写字一样简单了。
刚开始写字的时候,我们需要去了解一个字的笔划顺序、字体结构,而这些因素相当于语法及其结构。熟悉了之后,写代码也和写字一样是简简单单的事。
学习编程只是在学造句
计算机语言同人类语言一样,有时候我们也许会感慨一些计算机语言是多么地背离我们的世界,但是他们才是真正的计算机语言。
计算机语言是模仿人类的语言,从 if 到其他,而这些计算机语言又比人类语言简单。故而一开始学习语言的时候我们只是在学习造句,用一句话来概括一句代码的意思,或者可以称之为函数、方法(method)。
于是我们开始组词造句,以便最后能拼凑出一整篇文章。
编程是在写作
代码如诗,又或者代码如散文。总的来说,这是相对于英语而言,对于中文而言可不是如此。如果用一种所谓的中文语言写出来的代码,不能像中文诗一样,那么它就算不上是一种真正的中文语言。
那些所谓的写作逻辑对编程的影响
- 早期的代码是以行数算的,文章是以字数算的
- 代码是写给人看的,文章也是写给人看的
- 编程同写作一样,都由想法开始
- 代码同文章一样都可以堆砌出来(ps:如本文)
- 写出好的文章不容易,需要反复琢磨,写出好的代码不也是如此么
- 构造一个类,好比是构造一个人物的性格特点,多一点不行,少一点又不全
- 代码生成,和生成诗一样,没有情感,过于机械化
- 。。。
然而好的作家和一般的写作者,区别总是很大,对同一个问题的思考程度也是不同的。从一个作者到一个作家的过程,是一个不断写作不断积累的过程。而从一个普通的程序员到一个优秀的程序员也是如此,需要一个不断编程的过程。
当我们开始真正去编程的时候,我们还会纠结于"僧推月下门"还是"僧敲月下门"的时候,当我们越来越熟练就容易决定究竟用哪一个。而这样的“推敲”,无论在写作中还是在编程中都是相似的过程。
写作的过程真的就是一次探索之旅,而且它会贯穿人的一生。
编程只是在码字
真正的想法都在脑子里,而不在纸上或者IDE里。
抽象:程序员必备的能力
抽象:程序员必备的能力_知识库_博客园
https://kb.cnblogs.com/page/544641/
架构、体系、框架、库设计模式、平台
架构(Schema)
架构(Schema)是一组数据库对象的集合,它被单个负责人(可以是用户或角色)所拥有并构成唯一命名空间。你可以将架构看成是对象的容器。
体系结构(Architecture)
体系结构亦可称为架构,所谓软件架构,根据Perry 和Wolfe之定义:Software Architecture = {Elements,Forms, Rationale / Constraint },也就是软件主架构 = {组件元素,元素互助合作之模式,基础要求与限制}。Philippe Kruchten采用上面的定义,并说明主架构之设计就是:将各组件元素以某些理想的合作模式组织起来,以达成系统的基本功能和限制。体系结构又分为多种样式,如Pipes and Filters等。
框架(Framework)
框架亦可称为应用架构,框架的一般定义就是:在特定领域基于体系结构的可重用的设计。也可以认为框架是体系结构在特定领域下的应用。框架比较出名的例子就是MVC。
库(Library)
库应该是可重用的、相互协作的资源的集合,供开发人员进行重复调用。它与框架的主要区别在于运行时与程序的调用关系。库是被程序调用,而框架则调用程序。比较好的库有JDK。
设计模式(Design Pattern)
设计模式大家应该很熟悉,尤其四人帮所写的书更是家喻户晓。“四人帮”将模式描述为“在一定的环境中解决某一问题的方案”。这三个事物 — 问题、解决方案和环境 — 是模式的基本要素。给模式一个名称,考虑使用模式将产生的结果和提供一个或多个示例,对于说明模式也都是有用的。
平台(PlatForm)
由多种系统构成,其中也可以包含硬件部分。
对于以上的概念有一个比较清楚的认识之后,就可以在软件的开发过程中进行应用。理论和实践是缺一不可的,相辅相成的。没有理论的指导,实践就缺乏基础;没有实践的证明,理论就缺乏依据,因此我一直认为:对于当代的程序员,在有一定的实践基础后,必须学习更深的理论知识。无论你是从那方面先开始学习的。
在软件的开发过程中,从许多过程实践和方法中,大致可以提炼出五大步骤:需求、分析、设计、编码、测试。而体系结构是软件的骨架,是最重要的基础。体系结构是涉及到每一步骤中。一般在获取需要的同时,就应该开始分析软件的体系结构。体系结构现在一般是各个大的功能模块组合成,然后描述各个部分的关系。
我一般认为框架是体系结构中每个模块中更细小的结构。如需要表示web技术,就会用到MVC框架,而web功能只是整个软件体系中的一个功能模块。每个框架可以有许多个实例,如用java实现的MVC框架structs。
而在框架之下就是设计模式,设计模式一般是应用中框架之中的,也可以说是对框架的补充。因为框架只是提供了一个环境,需要我们我里面填入更多的东西。无论是否应用了设计模式,你都可以实现软件的功能,而正确应用了设计模式,是我们对前人软件的设计或实现方法的一种继承,从而让你的软件更软。
体系结构是可以从不同视角来进行分析的,所以软件体系结构的设计可以按照不同的视角来进行的。按4+1 views的论述,那是四种views:逻辑、开发、过程、物理和场景。因此体系结构是逐渐细化的,你不可能开始就拿出一个完美的体系结构,而只能根据开发过程逐渐对体系结构进行细化。
打个比方:如果我们准备建一个房子,那房子如果按功能来分:墙壁、地板、照明等,它是按那种样式来组成的,房子是四方的还是圆形的等,这样就组成了房子的体系结构。在体系结构之下,我们可以把框架应用在每个模块中,例如墙壁,我们准备应用什么框架。墙壁可以包括:窗户、门等。窗户和门的组成的就是一种框架。而窗户是什么形状的或者是大还是小,是要为了实现屋内的亮度的,因此挑选什么样的窗户就是设计模式。
发表评论