zoukankan      html  css  js  c++  java
  • 写代码的方法与思考

    写代码的方法与思考

    我们看各种各样的书籍,有讲原理的,也有讲实例的,你会发现里面讲的逻辑非常清晰,有时候你可能会困惑,他们怎么会想到用这个方法呢。其实这就是一个人的思考过程了。

    (1)如何制作一个单击鼠标菜单隐现的特效

    首先在准备制作一个特效前,你脑子里就得思考整个特效的全过程(工作过程:鼠标点击某个菜单,这个菜单如果是显现状态就变成隐藏,如果是隐藏的就变成显现)。

    知道了工作流程,下面就得解决每一步的疑问了。怎样知道是鼠标单击双击呢(click鼠标单击事件),怎样知道点的那个菜单呢(event对象),又怎样判断菜单目前的状态呢(设定条件并判断),状态表现出来是利用了标签属性的什么原理呢(display:none block;或者visibility:hidden visible;会占用原来的空间)。

    最后应该怎样来实现这个全过程:用编程语言将思考的过程描述出来。

    HTML代码

    <div id="menu">
    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    </div>
    

    JavaScript代码

    (1)给每个对象绑定事件
    var oLis=document.querySelectorAll("#menu>ul>li");
    oLis.forEach(function (item) {
                 item.addEventListener('click', function(){
                    item.style.display =(item.style.display == "none" )? "block" : "none";
                 }, false);
             });
             
    
    (2)事件委托(一次绑定,永久使用)
    var oDiv=document.querySelectorAll("#menu");
    function () {
    
        oDiv.addEventListener('click', function(event){
            event=event ||window.event;
            target=event.target||event.srcElement;
            target.style.display =(target.style.display == "none" )? "block" : "none";
                 }, false);
    

    (2)下面试一些书中提到的方法与思想

    1.只要你坚持下去,写代码就是那没简单,记住三个词:

    借鉴:多阅读,多分析,多学习一些成功的JavaScript的代码,多逛一些JavaScript类的技术社区,论坛,博客等,多与一些技术牛人学习,借鉴其经验和思路。
    
    多思考:思考的深度决定了代码的质量,因此多思考,多问几个为什么在很大的程度上可以提高代码的质量
    
    多动手练习:实践检验真理
    

    2.JavaScript的基本设计策略:

    写代码的前中后时,问三个问题:做什么?谁做?怎样做?

    应用程序的功能是什么?

    这个应用程序要做什么?尽量具体一点,假设你想要在发送Email的时候使用一个HTML表单,考虑以下问题。
    
        表单将包括多少域
        自己输入Email地址还是从一个列表中选取
        发送之前是否想要确认一下表单输入?你打算确定什么内容?消息?Email地址?还是两个都确认
        发送Email后发生什么事?是让用户转到另外一个页面还是什么也不用做
        多思考诸如此类的问题,你将会得到一个非常好的计划
    

    访问者是谁

    使用什么浏览器
    使用什么浏览设备,显示器分辨率
    使用哪种类型的网络连接
    应用程序中的JavaScript方法
    应用程序要解决什么问题,能否实现我要的功能
    尽可能的重复使用代码,从一个地方粘贴到另一个地方能否使用
    按时间顺序定义函数
    每个函数执行一个单一的操作
    使用尽可能多的局部变量
    

    3.编程的首要原则(s)是什么?

    学习一项知识,必须问自己三个重要问题:

    • 它的本质是什么。
    • 它的第一原则是什么。
    • 它的知识结构是怎样的。

    先弄清你的问题是什么!弄清问题永远是问题解决过程中的第一步和最重要的一步。代码只是工具,不是手段。

    不知道怎么最好地解决你手头的问题(注:需求、架构、算法,技术选型,etc..),写上一万坨代码也是浪费比特。知道什么时候不该编码。

    要把知识梳理成系统的结构,要让头脑中的知识层次清楚

    (3)个人体会

    1.学习知识时,一章一章学的时候,感觉挺有收获,也挺容易的。跟着实例,或者按照别人教的方法更是感觉到非常有成就感,觉得都懂了,但是要求你脱离资料,独自解决问题时,你总是会犯难。

    • 为什么会出现这种情况?

    短暂的记忆,未经过验证的自我良好感觉是具有欺骗性的

    • 如何解决这种问题?

    那就是找点问题来问问自己,看看自己是不是真真的牢固的掌握了,还是只是自我良好的感觉而已。通过测试立马就知道自己的能力如何,把自己的问题给暴露出来,所以测试还是挺有用的。

    2.重要的事情优先。尽量避免琐事骚扰,不重要的事情能不做就不做。

    3.学习东西一定得多问自己几个问题,尤其是那些你一看就明白

    为什么这种解法是对的? 
    为什么那种解法是错的? 
    为什么这种解法不是最优的? 
    证明为什么没有更优的解法?
    这个东西有什么用,能够解决什么问题,还只是好玩而已?
    

    如果你感觉自己JavaScript学的不错了,不妨自己考考自己,验证验证有没有自欺欺人。

    如何实现闭包?
    为什么事件有冒泡捕获?
    浏览器之间有何差异?
    何为dom,bom,有什么区别?
    JavaScript的function原理是什么?
    浏览器有那些JavaScript引擎?
    是否认识!、||、三元操作符、单链式写法、申明变量的缩写方法、惰性载入?
    如何判断浏览器是否支持HTML5?
    如何开发出跨设备,兼容性的代码?
    如何在不同浏览器中调试代码?
    DOM的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。
    JS变量提升、匿名函数、原型继承、作用域、闭包机制等。
    有哪些js设计模式
    

    学习编程就是学习一种思考方式,学习看透事物本质的一种锻炼,只有不断学习代码才能知道怎样写出更好的代码,没事多问问自己问题。专注,少些浮躁,坚定信念,才能走的跟高更远。

  • 相关阅读:
    实现连续测试,要做的事情【译】
    Go语言HTTPServer开发的六种实现
    JSON必知必会【PDF+视频教程】
    给JSONObject添加自定义遍历方法
    利用守护线程隐式关闭线程池
    从错误中学习
    Groovy动态添加方法和属性及Spock单测
    持续测试、持续集成、持续交付、持续部署和DevOps
    有关OAuth 2.0简化模式中步骤D-F的解释
    Spring笔记(五):bean的自动装配
  • 原文地址:https://www.cnblogs.com/YeChing/p/6336420.html
Copyright © 2011-2022 走看看