1
Desiree 2019-06-19 16:08:17 +08:00
编程没有捷径,多看源码,多思考. 量变才能质变
|
3
qianji201712 2019-06-19 16:15:40 +08:00 1
写代码 7 分想,3 分写,我觉得,如果没有设计思路的话,还是多看看一些优秀的代码,同时自己多写,去学习人家的设计
|
4
heyjei 2019-06-19 16:16:47 +08:00
两个字“模仿”。多模仿别人好的写法。
|
5
ytmsdy 2019-06-19 16:16:51 +08:00 1
刷 leetcode 的题目去,刷多了自然就有思路了
|
6
SuperMild 2019-06-19 16:17:56 +08:00 via iPhone
举个例子,比如你想写什么?
|
7
Frank2 OP @qianji201712 谢谢 做项目的时候 要实现功能 具体的写代码思路不知道从哪里下手 是先需要先用自然语言大白话写出来实现的步骤 然后翻译成代码写么还是有什么其它好的方法
|
8
996icu 2019-06-19 16:21:23 +08:00
还是看得少,写得少
|
10
auxox 2019-06-19 16:25:29 +08:00 2
个人觉得没有见过的东西,自己很难创造出来,没吃过猪肉,也得见过猪跑才行,所以,对于完全陌生的项目,建议还是先看下开源的实现,了解个大概,然后再动手
|
11
zephyru 2019-06-19 16:25:52 +08:00
感觉是个月经问题...
心血来潮提一下 编程思路训练除了上面那老哥提的 你问的什么思路,步骤,方法,这一类的...实际上设计模式就是为了这个准备的... 但也不能拿个锤子看什么都像钉子,所以依旧是量变引起质变的过程 个人认为,先去搞明白常见的数据结构和算法,然后常见的设计模式是解决什么问题的... 剩下的就可以去翻别人的代码了 |
12
Frank2 OP 就是一看例题代码都懂,自己写全完写不下去,脑子一片空白。我同学说是因为写的太少了,我也会去网上搜一些例题来自己练,可是觉得很难找到能真正练到思路的东西。
|
13
Akiyu 2019-06-19 16:26:52 +08:00
没有思路大概分为两种
1. 工具不熟练, 你不知道工具这样可以这样, 那样用 2. 完全没有想法, 这种就是知识不足 看代码, 学数学 硬件的尽头是物理, 而软件的尽头是数学 |
14
qianji201712 2019-06-19 16:29:04 +08:00
@Frank2 面向对象的话,那可以先确定下需要那些对象,然后根据操作逻辑,确定有哪些功能。
比如购物车,那肯定有 商品,购物车记录(包括一个商品)这两个基本的类,然后功能的话 往购物车 增加、删除、修改商品,从最基本的开发思路上,挨个实现这几个功能就好了 |
15
Frank2 OP @qianji201712 自己写的时候,思路有点混乱,不知道先写什么,后写什么!逻辑前后联系在写程序之前,好多都考虑不到。
|
17
q8164305 2019-06-19 16:31:56 +08:00 via Android 1
模仿啊,多看源码,才能知道什么是最佳实践,自己空想容易走歪路,量变形成质变
|
18
WhoAmIAndwhoAreU 2019-06-19 16:32:02 +08:00
想清楚再写十分重要
|
20
qianji201712 2019-06-19 16:36:41 +08:00
@Frank2
编程设计思路,还真不是一天半天学会的,只能一边写代码,一边学习别人,再一边思考,铁杵磨成针啊 |
21
Acappellavox 2019-06-19 16:48:02 +08:00
多写多练
多看多读 |
22
Frank2 OP 十分感谢大家的建议我现在的阶段主要是
1. 看别人的代码 2. 模仿别人的代码 3.总结别人的代码 4.在别人代码的基础上写自己的代码 但是不知道怎么形成自己的编程思路 |
24
kinghly 2019-06-19 16:53:05 +08:00 via Android
先模仿别人。写多了就有感觉。写之前要思考。
|
25
Frank2 OP @Akiyu 就是实现功能的时候完全没有想法,不知从哪下手 是逻辑思维方面的原因,还是有什么地方需要提升一下
|
26
msaionyc 2019-06-19 16:59:58 +08:00
你去网上搜例题有啥用啊,你得自己写项目啊,题目除了巩固基础技能没用的,项目得会(技能,流程,解决方案,优化)这些东西构成的,你现在等于只会基本技能,项目经验等于 0 啊
|
27
msaionyc 2019-06-19 17:00:47 +08:00
别待在做题这种舒适区里不愿意出来,你自己肯定知道要做项目,只不过不愿意去做(内心排斥),这样是成长不了的
|
28
Frank2 OP @zephyru 谢谢 写代码之前的思路 以前我总是看别人写的代码怎么实现的 但是不知道怎么形成自己的编程思路,自己去实现的时候 思路比较混乱不清晰,有什么好的方法推荐么?
|
29
luozic 2019-06-19 17:03:42 +08:00
1.去看別人設計的接口 sdk。github 推薦
2.學習 design before coding。 建模 3. DDD 和六邊形架構雖然落地少但是用來分析問題和需求是現在最好的工具 4.UML |
30
fml87 2019-06-19 17:05:58 +08:00
自己多写,先写出只包含最基本功能的 demo,再完善,最后和别人的设计 /实现对比下
|
31
Frank2 OP @msaionyc 嗯嗯,只是想参考一下别人怎么实现功能的,但是自己动手做的时候思路不清晰 是不是先在纸上用文字写实现步骤出来 然后用代码去翻译 画流程图什么的,有什么相关方法推荐么
|
32
Frank2 OP @qianji201712 自认为逻辑性还行,记忆力跟不上的确是这样。一开始想逻辑的时候是基于广度优先,但是写代码的时候又变成深度优先,渐渐的原来想好的逻辑又忘了。
看了楼上各位的实践,觉得最好的还是画流程图或者思维导图,但是觉得先写注释貌似更方便一点 |
33
newtype0092 2019-06-19 17:28:46 +08:00 1
两个常用的设计方法
自顶向下:先设计大概哪些模块画,采用什么设计模式( MVC、MVVM。。。),看看需要哪些 Class,每个类大概有哪些功能,对外提供哪些方法,继承和依赖调用关系如何,画个大概的架构图,这就是你的系统构架。 自底向上:先设计数据结构,需要哪些表,数据如何组织,有哪些状态,看看需求里数据变化的因果和联动关系,写下表结构和一些基础操作接口。 自顶向下的问题是一开始可能很多细节想不到,进行到下层的时候发现一些设计行不通或效率太低,又回到上层返工。 自底向上可能在没有想清整个构架的情况下设计的数据结构不够好,或者一些基础操作在实际业务场景里是用不到的做了白工。 一般不熟悉怎么设计的时候,两边同时搞更好点,能互相对照及早发现问题修正设计。 |
34
dddz97 2019-06-19 17:31:44 +08:00
抄,使劲的抄。抄的时候也要思考,抄多了就会了
|
35
akira 2019-06-19 17:32:08 +08:00
新手我一般建议先做界面再写功能 会比较有成就感
虽然这样出来的东西完全没设计 一团糟... |
36
msaionyc 2019-06-19 17:33:07 +08:00
别想别的,你现在需要多做做项目
|
37
Yemsheng 2019-06-19 17:47:17 +08:00
1. 了解清楚需求
2. 做好技术设计 3. 都想清楚了才动手 |
38
rain0002009 2019-06-19 17:55:11 +08:00
不会写还不会抄吗
大家不都是基于某搜索引擎的工程师嘛 抄多了 自然就会了嘛 |
39
tt67wq 2019-06-19 17:57:05 +08:00
不需要思路,CRUD+copy/paste
|
40
masker 2019-06-19 17:58:51 +08:00 via Android
啥都让人教,动手能力不行
|
41
yangzhezjgs 2019-06-19 18:11:10 +08:00
https://book.douban.com/subject/24531948/
面向对象开发的软件都可以看做是一组对象和他们之间的交互,所谓的开发思路就是如何抽象出类和他们之间的交互。上面这本书是南京大学的教材,我看过的讲软件设计的书里面写的最好的一本,推荐你看一下。 |
42
bayker 2019-06-19 18:13:26 +08:00
面向对象
|
43
sampeng 2019-06-19 18:18:35 +08:00 via iPhone
大问题拆成小问题。
|
44
limuyan44 2019-06-19 18:20:19 +08:00 via Android
是业务呢还是逻辑呢还是设计模式的还是 api 呢。。。
|
45
ThomasZ 2019-06-19 18:27:08 +08:00
拆分问题,重组问题,对问题提问,还是要多看优秀的源码,理解作者思想,从中学习
|
46
ahao99 2019-06-19 18:29:53 +08:00
需求变成能运行的代码,哪一步有问题呢?
比方说购物车这个需求,先要梳理需求,变成一个一个的任务。 后端写 API,前端做展示。 具体是哪一步不会呢?你别说你要把一整个步骤都掌握,那是全栈工程师要求老高了。 |
47
Frank2 OP @ahao99 谢谢,不是哪一步不会,主要是编程写代码的思路问题,一个一个功能点拆分后 具体的编程思路 整合在一起 编程主要是看思路 没有思路代码写不出来
|
49
Frank2 OP @yangzhezjgs 谢谢! 看别人写的程序基本都能看明白,但自己写的时候,思路有点混乱,不知道先写什么,后写什么!逻辑前后联系在写程序之前,好多都考虑不到。
|
50
Frank2 OP @yangzhezjgs 看别人写的程序基本都能看明白,但自己写的时候,思路有点混乱,不知道先写什么,后写什么!逻辑前后联系在写程序之前,好多都考虑不到。
|
51
zgl263885 2019-06-19 21:34:21 +08:00 via iPhone
分析问题,画流程图,抽象建模。
|
52
janus77 2019-06-19 21:36:15 +08:00
多看多写,看别人的,写自己的
|
53
ghos 2019-06-19 22:31:26 +08:00
写代码就像拼拼图...一般你会先拼 四边框架 然后不停延伸,也有人喜欢先拼中间延伸到两边 多看看人家怎么做的你也就懂了.
|
54
ghos 2019-06-19 22:33:07 +08:00
接上 你也可以想象成拼高达 先拼骨架 在拼一个手一个头 一个脚 还有武器 再装起来 就完成了
|
55
Frank2 OP @ghos 写代码的编程思路有什么比较好的方法慢慢锻炼出来比如看书什么的,有时做项目的时候开发一个具体的功能不知道从哪里开始下手 思路有一点乱
|
56
HuHui 2019-06-19 22:41:33 +08:00
睡一觉就好了
|
58
mumbler 2019-06-19 23:54:51 +08:00 via Android 5
说明不适合干这行
|
59
Raisu 2019-06-20 00:01:39 +08:00
1:复制,粘贴,改。
写写写 写写写 写写写 2:先写小功能,写大了再改 3:尽量用函数封装 |
60
SuperMild 2019-06-20 00:10:35 +08:00
@Frank2 上面很多人建议看代码,但我反而建议你先去使用类似产品。
比如购物车,先站在用户的角度去用,思考哪些是基本功能,哪些是加分功能。 其中特别要注意基本功能,即不可缺少的最最基本的功能。 然后先集中精神做一个功能,不想全局、架构那些,只管一个单独的小功能。先做出来,再改。 |
61
ruandao 2019-06-20 00:13:30 +08:00
how to design program
|
62
abeford 2019-06-20 00:17:37 +08:00
站在数据的层面想?
一步步倒退上来? |
63
notreami 2019-06-20 01:21:29 +08:00
看了一圈,大家难道不知道写代码前要出设计方案嘛??设计方案出来,还会缺写代码思路嘛??
|
64
miv 2019-06-20 05:56:45 +08:00
有道无术,术尚可求。
有术无道,止于术 |
65
softtwilight 2019-06-20 06:43:21 +08:00 via iPhone
看代码,看非常多的代码
|
67
liang7878 2019-06-20 07:54:02 +08:00
多刷算法题,学好设计模式(知道理论,阅读实际项目中有关该设计模式应用的代码)。本渣只能知道到这个程度了
|
68
Frank2 OP @liang7878 编程最重要的是把问题抽象的能力 具体的代码思路培养锻炼有什么好的书籍推荐么 主要是写代码的时候思路不清晰 需要一个编程思路框架
|
69
RockShake 2019-06-20 08:30:20 +08:00
无他唯手熟尔
|
70
silentstorm 2019-06-20 08:52:54 +08:00
设计-开发-测试
首先得有设计,就是你得知道自己想要干什么。 就像你在这里问大家有什么思路,大家只能给你泛泛的回答。因为不知道你到底想开发什么,实现什么功能。 |
71
Frank2 OP @silentstorm 举个例子说明一下比如需要开发几个电商的功能模块 商品模块
1.商品管理:商品和商品包的添加、修改、 删除、复制、批处理、商品计划上下架、SEO、商品多媒体上传 2.商品目录管理:树形的商品目录组织管理,并可以设置关联 /商品推荐。 3.商品类型管理:定义商品的类型,设置自定义属性项、SKU 项和商品评论项。 4.品牌管理:添加、修改、删除、上传品牌 LOGO。 5.商品评论管理:回复、删除。 整体大概框架有 但是不知道写代码的大概思路 怎么抽象化 思路具体点怎么一步一步实现功能 最后怎么整合代码 |
72
jzmws 2019-06-20 09:07:54 +08:00 1
复杂的我会先在方法上用文字描述出来,把大体的思路写出来 ,然后开始写大的代码 , 保证可以用,后面再考虑优化的
|
73
waiaan 2019-06-20 09:16:58 +08:00
光看没有用,一定要自己写,然后不断修改。
|
74
keikeizhang 2019-06-20 09:20:33 +08:00
@Frank2 #71 你写的这些条,都不需要原型,应该是可以直接平推掉的需求
|
75
Frank2 OP @jzmws 就是说先用文字方式把思路写出来 再转成代码实现功能么?主要是第一步分析功能实现的思路 不知道怎么下手 怎样实现功能把业务逻辑用文字形式表达清晰 最后用代码实现
|
76
keikeizhang 2019-06-20 09:23:38 +08:00
@Frank2 #71 比如第三条
想一下表如何设计,id 父 id name ... 输出的时候 父 子关系对应好 根据 id 和父 id 一个递归搞定 前端添加子商品的时候要求把父 id 一起给过来,所以接收的参数有 父 id 和 name ... = =# 大概就这样吧... 这个用语言形容居然这么麻烦... |
79
Frank2 OP @keikeizhang 嗯嗯,写代码之前的设计思路很重要,有什么好的方法培养自己独立的编程思路么?如果经常参考别人写的代码思路 会不会受别人的思路影响 产生思维定式 编程逻辑分析和抽象能力 有啥方法提升么
|
80
ddzy 2019-06-20 09:36:54 +08:00
@Frank2 分成四步走:
1. 需求分析 - 什么需求? (购物车) 2. 实景分析 - 带到实际生活中来, 把我当成一个消费者, 我会做什么操作? - 增加 or 删除商品 - 商品详情入口 - 提交订单 - .... 3. 代码思路 - 把上面第二步的对象, 引申一下 - `消费者` 就相当于写代码的人 - `购物车` 可以看作一个类 - `购物车` 内部提供诸如`提交订单`之类的操作 4. 代码编写 - 略 |
81
ahao99 2019-06-20 09:39:30 +08:00 1
看了你的回复我明白点了,你这不叫没有编程思路。
是你抽象概括能力不行,国外面试有个步骤叫 System design 就是像购物车这样的需求怎么做一个好的系统 来对这样一个需求进行很好的抽象。这种能力需要经验的积累,和相关业务能力有关。 什么叫没有编程思路呢?比如说你去做 leetcode 上的题目做不出来,这个叫没有编程思路。 不能混淆,不同的能力有不同的提高方式。 |
83
Frank2 OP @ahao99 抽象概括能力还可以,主要是做项目开发实现具体的功能的时候没有思路 想法 ,如果有编程思路 代码实现起来就不难了
|
84
notreami 2019-06-20 10:03:22 +08:00
@Frank2 说白了,就是先把思路写出来,再写代码。
不管是做算法,还是项目功能。是不是有已知条件、有边界、有目标。然后你的思路是不是有先后条件,需要先做到什么,然后再做到什么,最后才能得到想要的结果。每一个做到,是不是有实现的方式,就这样一步步列出来,思绪是不是清晰。写代码的思路是不是有了? |
85
darknoll 2019-06-20 10:08:24 +08:00
其实大部分人都是复制粘贴的
|
86
charlie21 2019-06-20 10:10:55 +08:00
尝试直接写 SDK,想着:写好之后卖出去,作为某个通用问题的通用解决方案,比如 aspnetboilerplate.com 等各种 web 框架
这样你会去从 API designer 的角度去考虑,而不是从 API caller 的角度去考虑 然后,深刻理解 “依赖注入” 这一设计模式,大量现代 web 框架不约而同地选择了 “依赖注入”,不是没有原因的。 https://juejin.im/post/5c4e86fe6fb9a049dc02a1b1 - |
87
charlie21 2019-06-20 10:13:59 +08:00
|
88
Doragd 2019-06-20 10:19:18 +08:00
曾经我也问过类似的问题。。。最后发现,就“多刷,多思考”
|
89
charlie21 2019-06-20 10:29:49 +08:00
typo -> 关于 “依赖注入” 在 ( 静态类型 强类型编程语言 ) 代码组织解耦方面的优越性
|
90
7gugu 2019-06-20 10:31:42 +08:00 via Android
先写点好玩的吧
|
91
Frank2 OP @notreami 嗯,实现功能的话首先要想明白实现的原理,然后再琢磨代码实现的思路 化繁为简 有一个问题 假如你遇到一个功能模块开发 一般思路是怎么想的,之前我经常看别人的代码 明白他们代码的思路,但是自己实际遇到开发功能的时候就没有思路了 主要是卡在实现这个功能的原理这儿了 了解实现原理后不是才能有实现思路么
|
92
glfpes 2019-06-20 11:19:40 +08:00
感觉把握几个原则就好:
1,尽量想想能否减少 IO,可以引入本地缓存 2,业务要尽量抽象,把能复用的逻辑尽可能抽出来,确保 1 个工程里不出现相同的代码。 3,最好维护几个内部或是自己的工具类集合,多次使用也多次优化,越来越健壮。 4,边界要划清,微服务挺好,自己负责自己的服务,服务间就走 rpc 5,服务的降级得准备好,任何依赖都是可能出问题的。虽然有监控,但是尽量给自己多点时间。 感觉能够应付绝大多数问题了。。。复杂度很高的目前也没接触过 |
94
securityCoding 2019-06-20 11:51:06 +08:00
说明你还没琢磨清楚需求
|
95
Frank2 OP @securityCoding 需求是肯定明白,主要是代码实现的思路不清晰,不知道从哪方面入手
|
96
Him 2019-06-20 12:07:50 +08:00
张嘴问
动眼看 用手写 动脑想 |
97
SuperMild 2019-06-20 12:17:23 +08:00
@Frank2 其实你可以随便从任何一个点入手,比如你上面说的
1.商品管理, 2.商品目录管理, 3.商品类型管理, 4.品牌管理, 5.商品评论管理 其中很明显不能从 5.商品评论管理 开始,剩下的 1234 可以随便抓住一个开始写,过程中发现需要别的项配合,就转去写需要配合的部分。 简单来说,就是先看成一堆不关联的散件,缺哪个做哪个,慢慢的思路就会清晰起来。 |
98
Frank2 OP @SuperMild 嗯嗯,项目上当您遇到某个功能点开发时,是如何想到这个思路的呢?怎么样才能有一个编程思路,我写程序时,总是没有思路,看别人的代码写的思路没有任何问题,自己实现起来比较难
|
99
xuanbg 2019-06-20 13:06:28 +08:00
画思维导图,把要做什么一层层分解下去就知道怎么做了。
|