2017-07-14

一、代码风格的重要性

  • 今天本来是打算看完一个接口任务的文档的,但是在一个SQL语句和几个实体类栽了很久,主要问题就是有些以前的代码不够规范。和大飞哥交流的过程也了解到项目刚成立的时候规范文档等都没有,所以大家都是按照自己心中认为的规范写,未免有些代码风格乱。
  • 这其实也是一个矛盾点,因为项目一开始确实也不可能定好详细的代码规范,如果什么开始都一开始就完美,那就不存在迭代开发了。ofo其实是个典型的例子,最开始那批自行车的锁特别差,但是如果他们这种小创业者一开始就事事想全了,市场早就被占有了。
  • 这时候就很有必要有良好的代码风格了,何为良好,我想很多书上所谓的代码风格不尽相同,但都有一个特点,就是不会我们不会觉得不好,这就是良好。很感激大学第一和第二门语言课的任课老师李海涛和徐文华老师,都特别强调代码风格,让我一开始就养成习惯。

二、学习委托时,理解了的知识

  1. 方法签名由方法的名称和它的每一个形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成。需注意的是,方法签名既不包含返回类型,也不包含 params 修饰符(它可用于最右边的参数)。在方法重载的上下文中,方法的签名不包括返回值。但在委托的上下文中,签名包括返回值。换句话说,方法和委托必须具有相同的返回类型。
  2. delegate 是表示对具有特定参数列表和返回类型的方法的引用的类型。在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。你可以通过委托实例调用方法。
  3. 例子:还有两个我觉得还行的链接,第一个链接通俗易懂,然而太浅了,读完还是不知道为啥要委托;第二个链接还好,有点长,一步一步讲,逻辑感还是挺强的,但真的需要耐心。当然了,还有MSDN官方文档,但是太正式了,不太适合新手看。
//该例子来自第二个链接
using System;
using System.Collections.Generic;
using System.Text;

namespace Delegate 
{
     //定义委托,它定义了可以代表的方法的类型
    public delegate void GreetingDelegate(string name);
            
    class Program 
    {
        private static void EnglishGreeting(string name) 
        {
            Console.WriteLine("Morning, " + name);
        }

        private static void ChineseGreeting(string name) 
        {                
            Console.WriteLine("早上好, " +  name);
        }

        //注意此方法,它接受一个GreetingDeleg ate类型的方法作为参数
        private static void  GreetPeople(string name,  GreetingDelegate MakeGreeting) 
        {
            MakeGreeting(name);
        }

        static void Main(string[] args) 
        {
            GreetPeople("Jimmy Zhang", EnglishGreeting);
            GreetPeople("张子阳", ChineseGreeting);
            Console.ReadKey();
        }
    }
    // 一句话总结:委托是一个类,它定义了方法的类型,
    // 使得可以将方法当作另一个方法的参数来进行传递,
    // 这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,
    // 同时使得程序具有更好的可扩展性。
}

三、前端

  1. css用id进行标识优先级最高。
  2. 表格中单元格的边框是可以自定义的。以边框为例:当设置<table>的border属性设置为0(即无边框),默认下其嵌套标签<tr><td>等都是无边框的,但是如果有css定义边框了,那么它将看起来不继承父类的无边框属性。因此发现在设置的属性没用,那就看看table下的其他相关标签是否有别的定义。
  3. text-align属性其实就可以让一个块元素居中,不过具体还是要看效果。
  4. padding(填充)和margin(边距)在嵌套元素中要注意了,配合浏览器的开发工具对每个元素的区域进行标识(盒子模式)。margin说不定可以让一个元素顶出去。例如今天我的<body>理论上是祖先元素,第一个是<div>块元素,却和<body>连体了,<div>设置了margin,把body顶走了。
  5. 让文字不换行:word-break: keep-all;
  6. 最好还是习惯用%和em做单位而不是px,即使是文字大小也一样。
  7. js中getElementsByClassName()注意返回的是List而不是一个object。在控制台(浏览器的开发者工具Console)看到TypeError,那么应该考虑这种问题。
  8. 给出一个js菜单伸缩功能的例子,源代码就展示js和html部分吧。程序员不应该重复造轮子的,今天体验到了~
  9. <!-- 这是HTML代码 -->
    <ul id="menu">
        <li>
            <h2>菜单一</h2>
            <ul class="list" style="display: none;">
                <li><span></span>一的内容</li>
                <li><span></span>一的内容</li>
                <li><span></span>一的内容</li>
                <li><span></span>一的内容</li>
            </ul>
        </li>
        <li>
            <h2>菜单二</h2>
            <ul class="list">
                <li><span></span>二的内容</li>
                <li><span></span>二的内容</li>
                <li><span></span>二的内容</li>
                <li><span></span>二的内容</li>
            </ul>
        </li>
        <li>
            <h2>菜单三</h2>
            <ul class="list">
                <li><span></span>三的内容</li>
                <li><span></span>三的内容</li>
                <li><span></span>三的内容</li>
                <li><span></span>三的内容</li>
            </ul>
        </li>
         <li>
            <h2>菜单四</h2>
            <ul class="list">
                <li><span></span>四的内容</li>
                <li><span></span>四的内容</li>
                <li><span></span>四的内容</li>
                <li><span></span>四的内容</li>
            </ul>
        </li>
    </ul>
    
    // 这是JavaScript代码
    window.onload=function(){
        var oMenu = document.getElementById('menu');
        var aH2 = oMenu[0].getElementsByTagName('h2');// 就是这里,要有[0]
        var aUl = oMenu[0].getElementsByTagName('ul');
        for(var i=0; i<aH2.length; i++){
            aH2[i].index = i;
            aH2[i].onclick = function(){
                for(var i=0; i<aUl.length; i++){
                    if(i==this.index){
                        if(aUl[this.index].style.display == 'block'){ 
                            aUl[this.index].style.display = 'none';   
                            aH2[this.index].className="active11";
                        }else{
                             
                            aUl[this.index].style.display = 'block';
                            aH2[this.index].className="active"; 
                        }   
                    }else{
                        aUl[i].style.display = 'none';
                        aH2[i].className="active11";    
                         
                    }
                }
            };      
        }
    };
    

    2017-07-14 Friday

posted @ 2017-07-15 00:40  辣条小布丁  阅读(155)  评论(0编辑  收藏  举报