V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Frank2
V2EX  ›  程序员

写代码的时候没有思路 不知道如何写起,请教如何培养训练编程思路 谢谢!

  •  2
     
  •   Frank2 · 2019-06-19 15:57:53 +08:00 via Android · 13072 次点击
    这是一个创建于 1772 天前的主题,其中的信息可能已经有所发展或是发生改变。
    135 条回复    2019-08-08 17:18:39 +08:00
    1  2  
    rdonly
        101
    rdonly  
       2019-06-20 13:47:36 +08:00
    明确需求
    SuperMild
        102
    SuperMild  
       2019-06-20 13:55:48 +08:00
    @Frank2 说了半天,你这是设计模式的问题啊。这个只能重构啊。比如网页前端 js 各种库和框架百花齐放,不断推陈出新,这里很多人鄙视前端说太多新花样去解决老问题,其实就是解决你说的问题。

    那些库和框架搞来搞去,最核心的要解决的就是让代码更合理地组织起来。建议可以多看各种库的官方文档,不是学用,而是注意看它们究竟想解决什么问题、如何解决。
    Frank2
        103
    Frank2  
    OP
       2019-06-20 14:03:44 +08:00 via Android
    @SuperMild 设计模式算属于一种编程思想,之前读过 jquery 源码,设计思想很好,现在主要是代码思路的问题,比如当开发一个功能点的时候无从下手,没有自己的编程思路,以前经常模仿别人的代码去改,但不是自己的思路 怎样培养锻炼自己的编程思路呢 遇到开发问题的时候有一个大体的解决思路。
    xuanbg
        104
    xuanbg  
       2019-06-20 14:11:20 +08:00
    @Frank2 很简单呀,譬如我们要做一个用户模块,可以先分为“用户管理”和“用户登录”两个部分。

    然后用户管理下面又可以分为新增、编辑、删除、列表查询、用户详情、绑定手机号、解绑手机号等等功能;用户登录下面有根据用户账号、手机号查询用户、生成 token、刷新 token、销毁 token、验证 token 等等功能。

    然后每个功能下面又可以分下去入参要哪些,返回什么数据,处理什么业务等等。。。
    qq1004108488
        105
    qq1004108488  
       2019-06-20 14:14:42 +08:00
    @Frank2 建议去慕课网买一两个实战的课程学习,首先说明,我不是推销的。里面课程里的老师,都是大公司的大佬,项目偏向于实战而不是讲原理讲架构,代码风格有自己的东西,每次我看他们的代码,都觉得很优美,这种优美不是那种觉得很高深的优美,是那种你改几个参数名,封装几个类就能感受到的优美。你跟着做一个项目就有感触,你不想花钱,可以看那些实战课程老师出的免费课,就能感受到他们的编码风格。
    Frank2
        106
    Frank2  
    OP
       2019-06-20 14:16:05 +08:00 via Android
    @xuanbg 这应该是业务逻辑,具体开发的时候代码实现思路怎么想到的呢?有什么具体培养锻炼编程思路的方法啥的么?之前总是借鉴别人的代码 但终归是别人的代码实现思路
    HuasLeung
        107
    HuasLeung  
       2019-06-20 14:17:22 +08:00
    ctrl c ctrl v,又不是不能用(逃
    xuanbg
        108
    xuanbg  
       2019-06-20 14:20:48 +08:00
    @Frank2 你先把这个思维导图画出来,对于要做的事情有了全面认知,自然就有编码的思路了。
    qq1004108488
        109
    qq1004108488  
       2019-06-20 14:20:51 +08:00   ❤️ 1
    @Frank2 你的问题在于,写的项目太一般,写的项目也太少。甚至一直在写垃圾代码垃圾项目。
    github 上面的项目虽然不错,但是不太适合你,因为这些项目你只看到了别人的结果,但是看不到别人的过程。
    你跟着课程做几个项目,必须跟着写,而不是只看。你就会慢慢的知道过程应该是怎么样的了。我一开始都是跟着慕课网上面的老师一行一行的敲,一行一行的注释。后面慢慢就有了自己的风格。慢慢的,现在基本在公司,我写出来的代码,改动基本为零。随手就知道哪里该封装。
    等你有了自己的风格,你再看 github 上面的项目,就会有了对比,才能很快思考出彼此的优缺点。不然你现在看 github 上面的项目,除了看,也就只能看了。很难吸收到有用的东西,或者说吸收的很慢。
    Frank2
        110
    Frank2  
    OP
       2019-06-20 14:38:25 +08:00 via Android
    @qq1004108488 之前看过不少视频教程,听的很明白 老师讲的思路也很清晰 但是自己实际项目开发中遇到功能点开发没有自己独立的编程思路 不知道第一步 第二步先写哪里 后写哪些 思路不是很清晰 经常会漏掉某一点 想的不是很全面,有什么好的方法推荐么?培养锻炼自己的编程思路
    @qq1004108488
    Frank2
        111
    Frank2  
    OP
       2019-06-20 14:47:19 +08:00
    @qq1004108488 谢谢你的建议 有几个问题想请教一下 就是当时你在慕课网上面看代码编程视频教程的时候 老师讲解的时候一般都是他们自己实现的项目思路 自己听的时候应该很清楚 你是怎样形成了自己的思路的呢 当时就是一步一步跟着教程里面的代码学着写 但是在实际工作里面如果遇到比较难的功能点的时候 自己是怎么去分析解决的 代码思路当时是如果想到的哈 我之前看过一些视频教程 问题就在于听的很清楚明白 如果转化成自己的思路不知怎么入手
    Frank2
        112
    Frank2  
    OP
       2019-06-20 15:10:40 +08:00
    @xuanbg 恩 画思维导图之前应该想明白要实现的原理 在实际项目中遇到相关功能点开发的时候经常卡在 知道需求 脑子里面没有大体的实现思路 之前参考别人的实现方法和思路解决过问题 形成不了自己的思路
    kevin1852
        113
    kevin1852  
       2019-06-20 15:21:38 +08:00
    多看看别人的代码,有时间回头看看自己之前写的烂代码,想想人家为什么这么做,自己当时为什么这么做,有没有优化的空间,用户量大了如何优化,并发高了如何优化,业务流程是否合理。
    总之多思考,时间会给你答案
    xuanbg
        114
    xuanbg  
       2019-06-20 15:44:09 +08:00
    @Frank2 无论做什么事情,都应该勤于思考。但人跟人不一样,有的人在脑子里面就能把一件事情的相关的方方面面都梳理得一清二楚,有的人想半天也想不明白,与其说在思考问题,倒不如说是在胡思乱想。怎么破?其实很简单,就是不要胡思乱想,要抓住头绪,一点点地去梳理,多花点时间,总能弄得一清二楚。思维导图的作用,就是帮助你抓住那个头绪,然后一点点分解、一点点地把相关的事物关联进来,并且理顺它们之间的关系,最终做到用图来准确地描述事物,让你看到这个图就能清晰地、正确地理解认知事物。

    所以不要想太多,先上手画图才是正经。等你想明白做什么、怎么做后,再写代码就不会不知道怎么写了。哪怕经验少不会写,也能知道该百度什么东西,该 copy 什么代码来实现你的需求。
    encro
        115
    encro  
       2019-06-20 16:04:16 +08:00
    适合 80%场景的 MVC 模式:
    1,设计原型或者前端 HTML,确定需求( View )
    2,定义 Model (数据库设计,模型字段)
    3,编写 Controller (实现 MV 交互,同时完善 MV )
    encro
        116
    encro  
       2019-06-20 16:10:45 +08:00
    关于以上的说明:
    View:不一定要用原型工具,可以在草稿上手绘出来
    Model:先只定义字段
    Controller:先根据 View 分解 Action,然后根据 Action 里面先用注释实现伪代码,然后根据注释填空代码
    Test:人工测试,自动化测试,外部测试
    Tool:学习掌握一些高效率的框架( Yii,django,bootstrap,springboot,ror 等等),自己编写一些工具,写 Blog 记录和备忘
    jzmws
        117
    jzmws  
       2019-06-20 16:19:05 +08:00
    @Frank2 我一般喜欢用笔直直接画 ,这样的效率最高
    Frank2
        118
    Frank2  
    OP
       2019-06-20 16:19:30 +08:00
    @xuanbg 恩 思维导图的作用是梳理知识点和功能点 我们部门的产品经理经常用它画产品功能和产品设计 具体到写代码实现功能上 可以举几个例子么 实现思路 怎么通过画图表示出来 之前尝试过在纸上用大白话文字的形式写步骤 具体到功能点代码开发 就不知道从何下手了 先写哪个功能点 后写哪一个 编程过程中的思路不是很清晰 导致后面修修补补很多
    Frank2
        119
    Frank2  
    OP
       2019-06-20 16:23:34 +08:00
    @jzmws 是用笔直接在纸上画代码的实现原理还是步骤呢 比如咱要实现一个功能 比如转盘抽奖功能 首先要明白实现的原理 其次在想实现的思路 如果不清楚原理 直接上代码写 没有思路 经常就是卡在这 不知道如何才能建立起代码编程实现思路来
    Frank2
        120
    Frank2  
    OP
       2019-06-20 17:10:11 +08:00 via Android
    @qianji201712 请教一下写一个程序的整体思路是什么样的? 看别人写的程序基本都能看明白,但自己写的时候,思路有点混乱,不知道先写什么,后写什么!逻辑前后联系在写程序之前,好多都考虑不到。
    nyfok
        121
    nyfok  
       2019-06-21 00:09:50 +08:00
    和写作文一样。先写提纲 =》 main 主程序+类+接口。然后一个个模块,step by step 一个个写就行了。除非是做研究型算法和建模,一般的开发都可以用这个方法。
    hzalbl
        122
    hzalbl  
       2019-06-21 09:17:11 +08:00
    刚入行也是这样 ,多看 多模仿, 可以先实现需求在优化, 慢慢的就好了
    Frank2
        123
    Frank2  
    OP
       2019-06-21 10:41:18 +08:00 via Android
    @nyfok 好的谢谢 老师方便说一下您的经验么?我之前尝试过写代码之前 先用文字写要实现的功能步骤 但是涉及到代码实现的时候 思路没有了 培养锻炼编程思路有什么好的学习方法么
    Frank2
        124
    Frank2  
    OP
       2019-06-21 10:44:57 +08:00 via Android
    @hzalbl 嗯嗯,以前就是经常模仿借鉴别人的代码 能理解他们写的代码思路,但是自己去实现的时候 大脑里基本上是别人的代码思路
    nyfok
        125
    nyfok  
       2019-06-21 10:54:19 +08:00
    @Frank2 我的方法就两个,第一:写足够多的代码,不要整天的增删改查,可以自己尝试写个框架,有 lucene,就写个自己的 lucene,有 hadoop,就写个自己的 hadoop,这样提高最快。第二:多看大神的代码,多上 github,这样能够给自己编程很多启发。第三:我从不写文档,代码及文档,先写代码核心 main 和接口、类,加上注释先,然后慢慢细化、丰富。
    Frank2
        126
    Frank2  
    OP
       2019-06-21 11:00:20 +08:00 via Android
    @nyfok 嗯嗯,当遇到功能点开发的时候 比如 一个购物车的功能 实现思路你是怎么处理的 是先画图写实现思路 再用代码实现 还是有其它的方法
    ChristianChen
        127
    ChristianChen  
       2019-06-21 11:07:01 +08:00 via Android
    思维导图
    nyfok
        128
    nyfok  
       2019-06-21 11:46:05 +08:00
    @Frank2 纸上画逻辑图,再代码
    tianyou666shen
        129
    tianyou666shen  
       2019-06-21 13:45:59 +08:00
    @Frank2 这个问题很好 我在两个月前也是困扰 当时独立负责一个后端接口的划分 数据库设计 感觉这方面力不从心 后来自己总结了一下 到现在可以说独立设计一个模块了然于心了.
    1.用笔写下来,一个系统有几个模块,比方商城:商品模块,登陆模块,下单模块,聊天模块.
    2.写一个模块的具体功能点.商品模块肯定要有商品添加,商品库存修改,商品信息修改,查询商品.
    3.写具体每个功能点的实现,商品添加,那么对应要有个商品表,基于商品 ID 做主键(或者单纯 ID),需要字段有,品名,所属类目,二级类目,单价,库存.图片,介绍文字等.
    3.b 有了数据库表设计,就可以写功能点的实现逻辑了.商品添加,就是一个 html 界面,配置商品的个个字段,存入商品表.
    5.按照写好的实现逻辑组织代码,用各种类库,数据库 curd 把这个小积木搭起来.
    这是我自己琢磨的实现方式,现在开发中在用,感觉对于 现实需求->系统->逻辑实现 这个事情有个直观的把握,代码也更有目的性.
    tianyou666shen
        130
    tianyou666shen  
       2019-06-21 13:47:03 +08:00
    希望遇到这个问题的同学能补充下,如果提高编码设计的能力,主要是把需求转为实际代码的能力?
    Frank2
        131
    Frank2  
    OP
       2019-06-21 14:32:26 +08:00 via Android
    思路这个东西,怎么才能在编写代码前理清,以前学校里上课的时候,老师总是提一件事情,就是做题要先写思路,思路很重要。可是,很多代码在写的时候,不知道是为什么,总是不知道怎么写,所以总是写完了添注释。感觉思路就很模糊,只是以前接触过才知道是那么写,但是一个题是什么思路就很不清楚。
    Frank2
        132
    Frank2  
    OP
       2019-06-21 17:44:38 +08:00 via Android
    @ChristianChen 思维导图做原型不错 程序语言基础还可以 就是遇到功能点开发 思路没有 写代码不知道从哪入手
    nuistzhou
        133
    nuistzhou  
       2019-06-21 23:25:59 +08:00
    @tianyou666shen 嗯,总结得很好,感觉就像是软件工程中学的,写 user story, 花 UML, 等等。
    qq1004108488
        134
    qq1004108488  
       2019-08-08 17:15:30 +08:00
    @Frank2 《学而不思则罔,思而不学则殆》这个你小学都学过的知识,就很好的回答了你问得问题。
    qq1004108488
        135
    qq1004108488  
       2019-08-08 17:18:39 +08:00
    @Frank2 怎么培养自己的思路就是坚持想和写伪代码。我写项目一般想的时间是写的时间的两倍,如果你前期思维没那么快,就想写步骤(伪代码),然后再想合不合理。合理再填充真实代码。一般初级程序员最大的问题就是拿到需求就直接写,写一步是一步,最后发现一点点改动就要重构整个逻辑,得不偿失。当你想的比写的多了,自然就有自己的思路了。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3241 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 13:18 · PVG 21:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.