如何提高一个编程初学者的逻辑和思想? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alanerzhao
V2EX    问与答

如何提高一个编程初学者的逻辑和思想?

  •  
  •   alanerzhao 2012-07-17 23:37:22 +08:00 3993 次点击
    这是一个创建于 4838 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在学习Javascript,但是以前一直没有学过,虽然在大学学过C 语言,但也不是太深,现在一直从事前端工作主要是CSS/HTML方面,但发现没有Javascript不行,所以就学习起来,但感觉自己的逻辑能力很差,看到一些效果根本没有思路。
    就是有思路的效果,我写的代码也很烂,就像下面一样。
    var iNum = 0;
    var getSlide = document.getElementById('slidetab');
    var getCOnt= getSlide.getElementsByTagName('div');
    var getwrap = document.getElementsByTagName('ul')[0];
    var getItem = getwrap.getElementsByTagName('li');
    var move = null;
    for (var i = 0; i < getItem.length; i++) {
    getItem[i].index = i;
    getItem[i].Onclick= function () {
    getItem[iNum].className = '';
    getCont[iNum].className = '';
    getItem[this.index].className = 'active';
    getCont[this.index].className = 'show';
    iNum = this.index;
    }
    };
    //自动
    var tabBox = document.getElementById('cont-nav');
    var tabItem = tabBox.getElementsByTagName('li');
    var cOntBox= document.getElementById('cont-box');
    var cOntItem= contBox.getElementsByTagName('li');
    var Onum= 0;

    省略之……会写的 不会写的都是一坨的获取,根本不会应用什么函数啊之类的,也没有什么思想,不知道如何提高这方面。如果有好的文章,或者教程,希望大家给推荐一下,关希望大家一起讨论,新手小白,还希望大牛海涵。
    13 条回复    1970-01-01 08:00:00 +08:00
    laskuma
        1
    laskuma  
       2012-07-17 23:40:30 +08:00
    top down design
    Stanford Programming Methodology貌似是第六讲讲到了
    cheshirecat
        2
    cheshirecat  
       2012-07-18 00:47:38 +08:00
    无论多丑陋,先做出来。再学重构技术。重构的常用招数不多,多练练就熟了。
    sivacohan
        3
    sivacohan  
    PRO
       2012-07-18 02:18:02 +08:00
    1,先运行,再正确,再最优。
    2,参照linux代码风格。当然你也可以选择其他的风格。
    3,推荐一本书,如何求解问题 现代解决方法。
    tylr
        4
    tylr  
       2012-07-18 02:23:44 +08:00
    @laskuma 的确,教授的讲述让我受益匪浅
    firsthym
        5
    firsthym  
       2012-07-19 10:05:50 +08:00
    基本没有捷径,只有多coding,study
    laskuma
        6
    laskuma  
       2012-07-19 10:11:11 +08:00
    @tylr 我能吐槽下LZ挖了个坑就跑了吗。。
    zooandzoo
        7
    zooandzoo  
       2012-07-19 10:11:39 +08:00
    慢慢来。。一次性写出高质量的代码几乎不可能。。。所有的程序都是有规律可循的。找出这个规律,那么你的代码就慢慢变得漂亮起来。
    tioover
        8
    tioover  
       2012-07-19 12:53:44 +08:00
    写个项目,不断重构,以前写的代码过一段时间会变得不顺眼,改顺眼了就提高了……
    推荐《计算机程序的构造和解析》因为js有函数式的血统所以帮助非常大
    fishleen
        9
    fishleen  
       2012-07-19 15:12:10 +08:00
    看Eloquent Javascript的时候在想怎么书里的代码那么好看,后来发现其实是思想的问题,一开始就把函数作为优先对象来考虑就会比原来写得好看点,再后面慢慢提高
    nikolai
        10
    nikolai  
       2012-07-19 16:13:44 +08:00
    我是去topcoder上面,从最初级的题目开始做起。

    Ps:做了几个月还是跨不过初级啊- -#
    alanerzhao
        11
    alanerzhao  
    OP
       2012-07-19 16:19:55 +08:00
    @laskuma 没有跑,还在纠结中
    mengzhuo
        12
    mengzhuo  
       2012-07-20 13:48:47 +08:00
    js这种东西怎么可以四处赋值啊!!内存就是这样用完的有没有!!对象的命名怎么可以有动词!!this不能乱用啊!!
    应该四处的都是名词,然后这些家伙干了什么,blah,blah,像故事会啊!有没有!
    example.js:
    苹果 = new 树.成果()
    if (小红.吃(苹果) == 高兴){
    小红.亲(小明)
    //小明.脱衣服().上(小明.亲的对象) //XXX:太流氓
    小张.打(小明)
    小明.亲戚.每个人(function(){
    this.打(小张)
    if (小张.hp < 0)
    小张 = null //这样垃圾车才能回收内存
    }) //这里有个匿名函数,还有个人喜欢的forEach(每个人)加到Array prototype,这里是示意this的一种用法
    }
    this具体上网嗖嗖
    p.s.以下是我个人觉得比较好for循环:
    for( let i in apples){
    apples[i].makeJuice(
    }
    gadgetlab
        13
    gadgetlab  
       2012-07-21 15:17:29 +08:00
    同为初学者,学习。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     992 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 18:43 PVG 02:43 LAX 11:43 JFK 14:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86