zoukankan      html  css  js  c++  java
  • 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部分吧。程序员不应该重复造轮子的,今天体验到了~
    <!-- 这是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

  • 相关阅读:
    一个老鸟发的公司内部整理的 Android 学习路线图
    Android studio button 按钮 四种绑定事件的方法
    Android 运行时权限处理(from jianshu)
    Android 运行时权限处理
    Android studio 快捷键
    Android Toast:是一个类,主要管理消息的提示
    Android开发使用软件
    重装系统,打开VS进行程序调试运行的时候 Unable to find manifest signing certificate in the certificate store
    dev gridview指定单元格cell获取坐标
    IOS 杂笔-3 (property参数)
  • 原文地址:https://www.cnblogs.com/LittleSec/p/7173552.html
Copyright © 2011-2022 走看看