如何写好一个普通工程作业,一份代码

本文提供了一套详细的步骤指导,帮助读者高效地完成工程作业。从理解需求到设计算法,再到代码实现与调试,涵盖了一系列实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么我要写这个,其实在很多人看起来,这篇文章看起来不是什么技术文档,但仔细阅读的话,你还是会收获很多,明白怎样去写好一个普通的工程作业。

完成工程作业的过程:

-首先,仔细阅读文档需求,同时,不断查阅资料,获取所需知识点。
-当我们明白自己还要补充哪些知识,才能完成任务。将这些进行记录,稍后进行资料查询
-然后进行思路的思考,进行方案设计,这个过程可能要设计很多的方案,并且需要很多额外的知识
-挑选成功可能性最高,效果最好的可能方案设计
-开始进行代码设计,其中可能涉及到算法,库文件等等的考虑,设计每一个模块,甚至精确到细节和算法!
-完成每一个模块,不断进行每一个模块的测试
-拼凑模块,调试整体功能
-test and debug
-完善

接下来开始细细说明:
假设一个情景,你的老师突然给你一个电话,喊你到教室,要给你一份所谓的project,然后该怎么做?
首先
阅读文档需求,非常重要,对于一篇任务文档。我们先不要急着动手。
好比文档:Regular Expression processor in Java(举例的文档内容在后面,仅供参考)
阅读全部文档
1.明白需求,到底要干什么
2.明白限制要求
3.明白自己要做什么,不要做什么(不要多做也不要少做)

书写,自己需要补充哪些资料:
比如这篇文档,需要补充(哪些小的知识点)
-如何写状态机
-如何写nfa,dfa
-正则表达式引擎怎么基于java实现

4.开始确立思路
(大概思路)
思路一:
思路二:
思路三:

5.挑选可行性最高的,然后进行思路的细化
比如要进行思路一:
使用自己算法,基于switch的状态机的实现
这时候一般会有草图,以及实现方法。算法等等(大概可行的草图和算法)

细节设计:
-文件读取,基于java的file系统(具体-》——-)
-正则表达式如何提取,然后怎么和算法进行配合读取
-算法具体实现的机制,所有细节,所有实现的具体思路方法(即状态机如何实现)
等等
然后搜寻资料,补充额外知识。

6.细节设计结束后,我们需要进行代码设计,这时候,一个程序被我们分成很多块,就像一个类图一样,什么模块什么功能。

好比于java文件读取,我们有很多种方案,很多细节,很多可行的方法。挑选出最适合自己的,进行代码书写,然后实现这一模块。

7.这里尤其要提到在算法设计里面的很多东西,好的算法一定是经得起推敲的。先想好思路,确定好细节,再进行书写

8.接下来便是上文所说的debug等过程。

这里我将要补充一些干货

代码设计tips(自己吃过的亏,自己总结出来的经验):

  1. 网页搜寻资料的时候,推荐csdn和博客园,推荐不要浏览太多技术文档,挑选最有用的那一份

  2. 确定方案的时候,一定要用平板或者草稿纸,写出自己的思路,不要空想!不要空想!无论是草拟方案还是细致的方案。

  3. 我们会设计算法,这个过程是复杂的!
    -普通算法设计中
    -思考具体思路
    -思考自己的数据结构,库文件,优秀的数学算法,递归-归并等方法,数学计算,网络算法 搜寻等等
    -考虑细节实现,利用草图和平板设计,伪代码书写
    -算法分析,挑选效率最高
    -具体实现

-普通模块功能实现和设计
-自己的思路
-网络搜寻

算法实现,最忌讳一边写,一边想,好的算法都是通过草图绘制,然后又思路的实现,同时为了减少bug的出现,都要不断进行测试,对有些小问题要进行测试。

  1. 设计代码的时候,一定要小部分的书写,进行测试,确保可以使用,在进行其他模块,不可以写很多代码,然后进行测试。

  2. 学会不断的进行数据测试,最大化减小出现问题的可能性。

  3. 不要好高骛远,代码写作,不是一个简单的事情,除非境界很高了,否则,还是静下心,弄懂细节,才能快速写出来。

想减少bug怎么办?:

——

  1. 不要写耍小聪明的代码,非常不确定的代码,这些可能都是未来的隐患

  2. 代码越少越好

  3. 学会适当的控制 异常出现
    断言,异常,和代码预览

  4. 代码可读性!注释,稍微写一点注释。

  5. 不要忽视编译器的警告!

  6. 学会释放自己的资源,free

  7. Report Only What You Can Prove(不要轻易使用自己没有把握的代码)

  8. 学会在写算法等等的时候,放松

  9. Divide and Conquer

  10. 寻找自己ide所使用的debug工具

  11. Don’t Rewrite Everything ,不要重写每一个地方

  12. 学会备份一些资料,不要调试过后就忘了

剩下的一些tips,我会继续更新。

Ps:Regular Expression processor in Java

Overview: Create a Java program that will accept a regular expression and a filename for a text file. The program will process the file, looking at every line to find matches for the regular expression and display them.

Regular Expression Format
The following operators are required to be accepted:
+ - one or more of the following character (no groups)
* - zero or more of the following character (no groups)
[] – no negation, no character spans – the only format is explicit, for example [0123456789]

Output:
The output from your program should be formatted like this:
Match found on line 10, starting at position 10 and ending at position 25: aaaaaaaaaaaaaa0

If the regular expression entered was a*[01]
And the input file contained at line 10:
Xxdsdsasdaaaaaaaaaaaaaaa0

Restrictions
Your program must implement its own regular expression functionality – you can not use the built-in regular expression mechanism, nor can you include one from a package or JAR file unless you created it and included the source code in your submission

Testing
Please be sure to test your code thoroughly – it will be graded using regular expressions and files that you do not have access to. Your code must work for all regular expressions and text files as described above. While you MAY NOT share code in any way, I would encourage all of you to write tests and share them with each other. You can write and test your test cases against sites like : https://regqwqq ex101.com/ or using Unix/Mac grep

Some Design Hints
Break this down into two problems:

  1. Build a list of states from the regular expression
  2. Loop over the input lines, then over each character in each input line, checking the input against the states.
    I built a class to wrap String, adding the idea of which character is “current” and the ability to get the current character and to peek at the next character. This made my code cleaner and easier to reason about.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值