随笔-5  评论-0  文章-0  trackbacks-0
  2011年10月23日
     摘要: Web开发的mvc模式及改进  阅读全文
posted @ 2011-12-28 22:53 人称小雨 阅读(125) | 评论 (0)编辑 收藏
1.font-size:     字体大小
2.color:           颜色
3.font-family:   字体类型
4.font-style:     斜体italic
5.font-weight: 字体加粗bold
6.text-transform: 大小写,uppercase大写或者lowercase小写
7.text-decoration: 装饰,经常给超链中的字体使用,underline下划线,overline上划线,linethrough中间删除线
8.letter-spacing,word-spacing: 字母间距和单词(字)间距,汉字没有字母间距
9.line-height:     行间距,算法很奇怪,从行的底部到上面行的底部这个和div或span的height相等的话 字体会自动居中
10.text-align:     对齐方式,左left中center右right  图片后面加的文字说明则是上top中center下bottom

11.text-indent : 首行缩进,一般是2em(腾讯代码里面写的2rem不知道什么意思,哪位大哥知道的话请留言。。。谢谢!)
12.margin:         边距,四个方向,top,right,bottom,left;涉及盒子模型跟padding,border要区分清楚
13.overflow:       超出范围的内容显示方式,很少使用auto和其它的,一般都是hidden不显示
14.background-image:   背景图片
     background-repeat:  重复方式,no-repeat不重复,repeat-x横向重复一行,repeat-y纵向重复一行,应该没有对角重复
     background-position:  图片的位置,这个是用非常频繁,五个值top,right,bottom,left,center以及神奇的具体位置定位,也就是图片的偏移技术

15.border-collapse: 单像素表格消除重复边框,值为collapse
16.border-radius:    边框的圆角程度可以写四个,上右下左,也可以写一个代表所有
17.text-shaw,box-shadow:   文字的阴影效果和边框的阴影效果,变化不大但是效果很好
18. position:    定位,绝对定位absolute,相对定位relative,及固定定位fixed(一些网站的导航条经常这么做),再加上可以使用的显示层z-index,用处非常大;
19. float:     浮动,值有right右浮动,left左浮动,需要注意的是一旦剩余位置大小不够时这个块会自动往下一行排
20.display:    展示方式,block块,inline行,inline-block和none隐藏
                    需要提的是这个inline-block,一个inline的行级标签如span,它们的高度是无法调整的,但是使用display:block改为块级后可以,这样可能会出现一些不想看到的效果。因此                       改为display:inline-block后可以调整高度也没有块级的一些效果
      虽然使用一些css插件可以做的更多更好,但是我还是觉得css必须精通才可以对自己的作品了如指掌,javaScript也是如此,会使用插件EXTjs、jQuery等等是必须的,但是基础也同样重要。欢迎大家留言、指导。小子是新手,错的地方还希望前辈们多多指点!




posted @ 2011-12-12 11:16 人称小雨 阅读(178) | 评论 (0)编辑 收藏

良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。

1.避免重复原则(DRY – Don’t repeat yourself)

编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。

2.抽象原则(Abstraction Principle )

与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。

3.简单原则(Keep It Simple and Stupid )

简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。

4.避免创建你不要的代码 Avoid Creating a YAGNI (You aren’t going to need it)

除非你需要它,否则别创建新功能。

5.尽可能做可运行的最简单的事(Do the simplest thing that could possibly work)

尽可能做可运行的最简单的事。在编程中,一定要保持简单原则。作为一名程序员不断的反思“如何在工作中做到简化呢?”这将有助于在设计中保持简单的路径。

6.别让我思考(Don’t make me think )

这是Steve Krug一本书的标题,同时也和编程有关。所编写的代码一定要易于读易于理解,这样别人才会欣赏,也能够给你提出合理化的建议。相反,若是繁杂难解的程序,其他人总是会避而远之的。

7.开闭原则(Open/Closed Principle)

你所编写的软件实体(类、模块、函数等)最好是开源的,这样别人可以拓展开发。不过,对于你的代码,得限定别人不得修改。换句话说,别人可以基于你的代码进行拓展编写,但却不能修改你的代码。

8.代码维护(Write Code for the Maintainer)

一个优秀的代码,应当使本人或是他人在将来都能够对它继续编写或维护。代码维护时,或许本人会比较容易,但对他人却比较麻烦。因此你写的代码要尽可能保证他人能够容易维护。用书中原话说“如果一个维护者不再继续维护你的代码,很可能他就有想杀了你的冲动。”

9.最小惊讶原则(Principle of least astonishment)

最小惊讶原则通常是在用户界面方面引用,但同样适用于编写的代码。代码应该尽可能减少让读者惊喜。也就是说,你编写的代码只需按照项目的要求来编写。其他华丽的功能就不必了,以免弄巧成拙。

10.单一责任原则(Single Responsibility Principle) 

某个代码的功能,应该保证只有单一的明确的执行任务。

11.低耦合原则(Minimize Coupling)

代码的任何一个部分应该减少对其他区域代码的依赖关系。尽量不要使用共享参数。低耦合往往是完美结构系统和优秀设计的标志。

12.最大限度凝聚原则(Maximize Cohesion)

相似的功能代码应尽量放在一个部分。

13.隐藏实现细节(Hide Implementation Details)

隐藏实现细节原则,当其他功能部分发生变化时,能够尽可能降低对其他组件的影响。

14.迪米特法则又叫作最少知识原则(Law of Demeter)

该代码只和与其有直接关系的部分连接。(比如:该部分继承的类,包含的对象,参数传递的对象等)。

15.避免过早优化(Avoid Premature Optimization)

除非你的代码运行的比你想像中的要慢,否则别去优化。假如你真的想优化,就必须先想好如何用数据证明,它的速度变快了。

“过早的优化是一切罪恶的根源”——Donald Knuth

16.代码重用原则(Code Reuse is Good) 

重用代码能提高代码的可读性,缩短开发时间。

17.关注点分离(Separation of Concerns)

不同领域的功能,应该由不同的代码和最小重迭的模块组成。

18.拥抱改变(Embrace Change)

这是Kent Beck一本书的标题,同时也被认为是极限编程和敏捷方法的宗旨。

许多其他原则都是基于这个概念的,即你应该积极面对变化。事实上,一些较老的编程原则如最小化耦合原则都是为了使代码能够容易变化。无论你是否是个极限编程者,基于这个原则去编写代码会让你的工作变得更有意义。

作者简介:Christopher Diggins是加拿大一位有25年编程经验的资深技术人员,曾效力于Microsoft和AutoDesk,并创办过两家赢利的互联网公司。

他是《C++ Cookbook》的作者之一,并自己编写了一门编程语言Heron。




posted @ 2011-11-09 19:19 人称小雨 阅读(138) | 评论 (0)编辑 收藏
    下面这段话是转载的解释:
     

 Singleton Pattern(单例模式)

 改善全局变量和命名空间的冲突,可以说是一种改良了的全局变量。这种一个类只有一个实例,且提供一个访问全局点的方式,更加灵活的保证了实例的创建和访问约束。
    有时候在使用类的时候,这个类必须存在,但是我们又要求这个类在整个工程中只能有一个对象,无论什么时候调用都只能调用这唯一的一个对象,怎么做呢?
    这种模式的核心跟javaBean有点类似,不同在于单例模式要求创建并私有化一个对象,同时私有化构造方法,重写构造方法使其返回这个对象。为了能够使用这个对象,我们在其中创建一个静态的Get方法用来返回该对象。
    
    一般的我们会用两种单例模式的方法,一个是延迟加载,又叫懒汉式,另一个是非延迟加载,又称饿汗式。区别在于前者是在调用的时候才生成对象,而后者则是事先生成对象;方法区别在于是否把生成对象放入get方法(可以加入判断如果该对象不存在就new一个,存在的话就返回该已存在的对象)。
    这种思想在很多地方都会使用,用同样的思想我们可以解决更多的问题。

    23种模式想了解更多的话可以去谷歌看看。我们重点不是掌握几种方法,而是驾驭这种思想,灵活使用这种方法。高内聚,低耦合,在写程序之前就要对整个过程了解很透彻,而不是边写边想究竟该怎么布局。
    
        

posted @ 2011-10-26 12:57 人称小雨 阅读(125) | 评论 (0)编辑 收藏
    今天见识了手机的NFC(近场感应技术)功能,确实给生活带来了很大方便。可以想象,以后的门、窗、电脑、电视、空调、汽车……不久以后的商场甚至是taxi…… 只有想不到的,没有用不到的。这技术也许并不新奇,但是手机的功能正在向更强、更新、更快发展,似乎所有的功能我们都想把它给予手机……也许以后手机就是披着手机外衣的“万事通”。
    
    多态,解释为接口的多种不同实现方式式,但是并不是声明为interface的接口类才能使用,不要被他迷惑了,我们就把它当成一个抽象类,一个“稍微”特殊的类,用类的使用方法来使用它。
    首先,抽象类中没有构造方法,所以我们不能直接声明它的对象,也就不能通过对象调用方法,但是它有至少一个子类,这就为我们留了一扇门。只要我们知道某个对象属于它的子类(不必去知道究竟那个子类),我们就可以通过子类的对象调用方法。那么,究竟怎么知道那到底属于那个子类呢?这就靠不同子类对抽象父类中这个方法的不同重写来完成。那么,这句话是不是有点熟悉?对! 方法的重载跟这何其相似,不同的在于其“级别”不同:一个是自主判断所属子类而调用方法,一个是自主判断不同参数调用方法。
    其次,就是对方法的调用了。当父类指向子类,例如 Student stu = new littleStudent();  littleStudent 是抽象类Student的子类并且对Student的至少一个方法进行了重写。那么当我使用stu调用方法时,对于父类中有但是子类没有重写的方法,stu自动调用父类中的方法;而对于在子类中有重写的方法,stu调用子类中的方法。
    我个人觉得在使用抽象类作为方法的参数或者返回值的时候,尽量不要使用Object,现在的省事儿也许就是以后自己或者别人的噩梦。 
    我坚持规范,开始不习惯或者郁闷很正常,这是对自己负责,也是对别人负责。
    
    
    
posted @ 2011-10-23 20:16 人称小雨 阅读(144) | 评论 (0)编辑 收藏