精华内容
下载资源
问答
  • 如何编写优秀的代码
    万次阅读
    2019-07-17 18:01:20

    刚开始接触编程时,觉得写出来的代码能够达到对应的目标即可。但是随着需求的变更、功能的扩展,慢慢的会发现代码变的越来越臃肿,时间长了再回头看自己的代码有种“陌生人”的感觉,如果这时候你的功能被新人接手了,那么恭喜你,从那一天起又多了一个骂你的人。

    优秀的程序员写代码总是会给人一种高效、优美、通俗易懂的感觉。同样的业务用不同的人来写,写出来的东西也不是一个档次,虽然最终效果很可能是一样的。

    我这里只给一个写优秀代码的指导思路,拿java来举例,至于细节大家自行去学习即可。

    一:基础扎实

    首先要求你对编程语言本身很了解,基础一定要扎实,否则就会出现滥用的情况。

    1.比如正确的使用final,static等关键字。合理正确的使用final能够减少项目中的一些风险,比如String默认是final的,那你在定义常量的时候是不是也要考虑一下要不要声明为final,方法和类也是如此。同理static也一样

    2.方法声明时要符合最小权限原则。能private的非要声明为public这样肯定就不规范。然后本来这个方法不希望被一些地方调用,由于你的方法声明为public被别的同事调用了,问题就有可能出现。

    3.如果你掌握了泛型,那么你在设计一个方法或者类时就能设计的更好。泛型可以指代一切的类型,这个类型没有特指具体什么类型,所以你可以用它抽象出一个泛型类或泛型方法,满足所有同逻辑下的所有类型。避免很多逻辑上重复的代码

    4.格式化与注释。注释可以帮助我们理解逻辑,而格式化代码可以让我们用熟悉的格式来阅读代码,最起码看着舒心。

    5.枚举的使用。枚举可以替代一些静态常量、switch case,还更加安全,为什么不用呢?当前前提你要理解

    6.lambda表达式,函数时编程。没有过函数式编程经验的需要一定的学习成本,但是学会了,用的时候是真香,肯定要学

    ......

    需要学习的点太多,这里就不一一列举了,总之你要不断的mark新的知识点,让自己越来越了解自己所用的编程语言,毕竟知己知彼才能百战不殆!

    二:注意细节

    漂亮的代码不仅要求你基础扎实,它还要求你态度要端正。如果你的用法很高级,但是不注意细节,代码还是不规范,那只会增加新人的阅读负担。这就是人们常说的“羊粑粑蛋儿”,“羊粑粑”顾名思义羊拉的屎。羊屎的外皮很光滑,但里面糙的很。

    注意细节,要养成良好的编码习惯。做到以下几点:

    1.  明确自己的目标

    在动手之前要明确自己要做什么,写出来的程序要达到什么效果,需要计算什么,需要记录什么等等。

    2.  设计程序

    知道自己的目标之后,要计划如何来完成,选用什么计算方式,用什么方法处理数据,需要思考自己有没有清晰的解决方法等等。只有做到上面这两步,才不会将写了一半的代码删了重新写。

    3.  编写代码

    这一步需要做到规范代码,尽量让自己的代码看起来顺畅。前面两步就是为了防止你的代码写到一半才发现自己脑子处于很懵的状态或者是发现自己的思路根本就不对,这样很容易打断思路,写出一堆垃圾代码。

    4.  修改代码

    这一步是为了完善自己的代码,bug虽然避免不了,但是我们也不要犯低级的错误。养成良好的习惯,不让别人觉得咱们的代码很low。

    5. 细节

    方法参数不易过多,驼峰命名法,日志打点,代码单元测试......

    更多相关内容
  • 代码质量概述怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的...
  • vscode编写代码

    千次阅读 2020-10-11 11:04:04
    vscode编写代码 PS:在此之前。先在keil的lib中添加我们固件库的全部文件,方便以后不用频繁添加 路径为:STM32\Libraries\STM32F10x_StdPeriph_Driver\src 添加完成后: 1. 打开vscode 2. 打开我们的文件夹STM...

    vscode编写代码

    如何建工程

    PS:在此之前。先在keil的lib中添加我们固件库的全部文件,方便以后不用频繁添加

    在这里插入图片描述

    路径为:STM32\Libraries\STM32F10x_StdPeriph_Driver\src
    在这里插入图片描述

    添加完成后:
    在这里插入图片描述


    1. 打开vscode

    在这里插入图片描述

    2. 打开我们的文件夹STM32

    在这里插入图片描述
    在这里插入图片描述

    是不是逼格一下子就提升上来了_
    在这里插入图片描述

    3. 配置vscode

    有错误,点击小灯泡:
    在这里插入图片描述

    之后会生成一个.vscode 的配置文件夹**(当然你必须安装C/C++插件)**
    在这里插入图片描述
    在这里插入图片描述

    4. c_cpp_properties.json(添加的文件路径可以直接复制)

    {
        "configurations": [
            {
                "name": "Win32",
                // 添加的文件路径可以直接复制
                "includePath": [
                    "${default}",
                    "${workspaceFolder}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x",
                    "${workspaceFolder}/Libraries/CMSIS/CM3/CoreSupport",
                    "${workspaceFolder}/Libraries/STM32F10x_StdPeriph_Driver/inc",
                    "${workspaceFolder}/Inc"  
                ],
                // 宏
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "_UNICODE",
                    "STM32F10X_HD",
                    "USE_PERIPH_DRIVER"
                ],
                "compilerPath": "E:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\gcc.exe",
                "cStandard": "c11",
                "cppStandard": "c++14",
                "intelliSenseMode": "gcc-x64"
            }
        ],
        "version": 4
    }
    

    5. 报错消失,并有强大的代码提示

    在这里插入图片描述
    在这里插入图片描述

    测试

    在这里插入图片描述
    这样,你就可以在逼格高端大气上档次的vscode中编写代码,在调试编译功能强大的keil中调试编译程序了!

    ps: 在vscode里面user中添加新文件别忘了在keil的user中添加相应文件。

    展开全文
  • 编写干净的代码

    2021-03-04 20:10:12
    本文来自于RationalEdge:看看软件开发人员在代码编写工作中为什么需要学习代码的优雅性,结构以及效率方面的内容。 今年夏天我在明尼苏达州明尼阿波利斯参加了Agile2006会议,并在那里度过了美好的时光。当我与...
  • 快速操作sql编写代码Swift has evolved significantly over the years. It offers type safety and is a lot more concise than many languages. As the number of features continues to increase, knowing and ...

    快速操作sql编写代码

    Swift has evolved significantly over the years. It offers type safety and is a lot more concise than many languages. As the number of features continues to increase, knowing and keeping a track of some cool tricks is becoming a challenge.

    多年来,Swift取得了长足的发展。 它提供类型安全性,并且比许多语言都简洁得多。 随着功能数量的不断增加,了解并掌握一些不错的技巧已成为一项挑战。

    In the following sections, I’ll walk you through some Swifty ways of writing code. I hope it helps you build even better iOS apps.

    在以下各节中,我将引导您完成一些Swifty编写代码的方法。 我希望它可以帮助您构建更好的iOS应用。

    使用地图安全解开可选项 (Use Maps to Safely Unwrap Optionals)

    Typically, we use the if let or guard let syntax to safely unwrap optionals in Swift. While that’s all fine, sometimes you wish there was a way without those brackets around — especially when you’re unwrapping a child property. Thankfully, we can unwrap optionals using the map operator.

    通常,我们使用if letguard let语法来安全地打开Swift中的可选内容。 一切都很好,但有时您希望有一种方法可以解决这些问题,尤其是在拆包子资产时。 值得庆幸的是,我们可以使用map运算符解开可选参数。

    Optional values passed inside a map closure are evaluated only if they contain some value, thereby ensuring it’s not nil.

    一个内部传递的可选值map中是否含有一定的价值,从而确保它不封闭,只能判断nil

    swift optional unwrapping maps

    Using maps for unwrapping is handy in optional tuples as well. Here’s a Swifty way to do it:

    在可选的元组中,使用映射进行解包也很方便。 这是一种快速的方法:

    func sampleTuple() -> (String, String)?{
    return nil
    }let (a, b) = sampleTuple().map { ($0, $1) } ?? ("NA", "NA")

    在初始化时调用willSet和didSet (Invoking willSet and didSet at Initialization)

    In short, willSet and didSet property observers are not called when the property is first initialized. But you can work around this by wrapping the initialization in a defer statement.

    简而言之,在首次初始化属性时,不会调用willSetdidSet属性观察器。 但是您可以通过将初始化包装在defer语句中来解决此问题。

    Though this approach is a bit hacky, as you’d somehow have to set a default value (in the declaration or outside defer), it’s still good to know:

    尽管这种方法有点笨拙 ,但是由于您不得不以某种方式设置默认值(在声明中或在外部defer中),因此仍然很高兴知道:

    swift didset willset init defer

    使用协议扩展进行默认实现 (Using Protocol Extensions for Default Implementations)

    Swift protocols are powerful, but they don’t let you specify default implementations. This could be handy at times when you want to avoid overriding the functions.

    Swift协议功能强大,但是它们不允许您指定默认实现。 当您想避免覆盖函数时,这可能会很方便。

    Moreover, you could use the where clause in the extensions to specify protocol implementations for certain constraints only. But make sure you don’t overdo protocol extensions in your codebase.

    此外,您可以使用扩展中的where子句仅针对某些约束指定协议实现。 但是请确保您不会在代码库中过度使用协议扩展。

    swift-protocol-extension

    轻松跟踪字典中的更改 (Track Changes in Dictionaries Easily)

    There may come a point where you’d like to know what’s changed in a Swift dictionary (probably for debugging). The tedious way of doing this is by diffing the contents. But there’s a Swifty way of doing this as well. Simply define a subscript on an object that holds that dictionary, as shown below:

    在某些情况下,您可能想知道Swift字典中的更改(可能是用于调试)。 繁琐的方法是通过分散内容。 但是,还有一种快速的方法可以做到这一点。 只需在保存该字典的对象上定义一个下标,如下所示:

    swift dictionary subscript

    在不同范围内使用防护罩 (Use guard let in Different Scopes)

    The guard let statement uses the safe fail-first approach wherein a nil value ensures that you return immediately. But sometimes, using return isn’t in our best interest. For instance, you could be in a for loop and only wish to continue or break. Gladly, you can do this in the following way:

    guard let语句使用安全的故障优先方法,其中nil值可确保您立即返回。 但是有时候,使用return并不符合我们的最大利益。 例如,您可能处于for循环中,只希望continuebreak 。 很高兴,您可以通过以下方式进行操作:

    swift guard let throw continue break

    使用重新抛出进行强大的错误处理 (Use rethrows for Powerful Error Handling)

    We all know and use the throws keyword but rarely leverage the power of rethrows in Swift. A function declared with the rethrows keyword indicates that it throws an error only if one of its function parameters throws.

    我们都知道并使用throws关键字,但是很少利用Swift中的rethrows 。 函数与宣布rethrows关键字表明它抛出只有当它的功能参数之一的错误throws

    This means that if the closure parameter doesn’t throw an error, we don’t need to use the different flavors of try when calling it. Swift lets us use this elegant way to significantly reduce the boilerplate code. As you can see in the code below, we don’t need to put the same non-throwing version of a function in a do-catch block.

    这意味着,如果Closure参数没有引发错误,则在调用它时我们不需要使用其他try风格。 Swift让我们使用这种优雅的方式来显着减少样板代码。 如您在下面的代码中看到的,我们不需要在do-catch块中放入相同的非抛出函数版本。

    swift rethrow and throw function

    结论 (Conclusion)

    That’s it for this one. Thanks for reading and I hope you enjoyed the article.

    这就是它了。 感谢您的阅读,希望您喜欢这篇文章。

    翻译自: https://medium.com/better-programming/6-swifty-ways-of-writing-code-f260286a0dbb

    快速操作sql编写代码

    展开全文
  • 请问用opencv-python怎样编写代码,以简单的判断灯源是否频闪(假定采集设备是高速摄像机,设备帧率足够大),怎样定义用于判断是否频闪的频闪率阈值。
  • 如何写代码

    2014-08-28 17:59:12
    如何写代码,这里有一些内容可以参考一下,我也是初学者
  • 主要用于在日常的开发工作中,如何快速地编写代码,实现功能。这里结合自己的经验,开发感受,进行整理输出。 帮助和期望能帮助大家高效高质完成工作任务,节约时间去做自己想做的事情。

    1.应用场景

    主要用于在日常的开发工作中,如何快速地编写代码,实现功能。

    这里结合自己的经验,开发感受,进行整理输出。

    帮助和期望能帮助大家高效高质完成工作任务,节约时间去做自己想做的事情。

    2.学习/操作

    1.文档阅读

    开发人员自我检查程序流程 - 收集_william_n的博客-CSDN博客

    额外

    PHP - 代码简写 - 收集/实践_william_n的博客-CSDN博客_php 简写

    2.整理输出

    前言

    有时,我们在接到开发需求的时候,有点无从下手的感觉,但是我们知道,需求必须要做,那么如何开始呢?以及如何保证尽量高效高质地完成任务,减少不必要的时间浪费, 并且能享受高效编程带来的快感呢?

    个人的经验如下,但是前提是你已经具有编程需要的基本技能,总不能什么都不会,就像能高效地编程,不过,即使做不到高效编程,也能提高工作效率,减少无用功。

    供参考

    2.1 首先需求保证清楚明白。

    这一点就不用多说了,如果需求都没明白,编码实现都是后话。

    所以,尽量非常清楚需求,免得做一些无用功。

    当然这个视情况而定,有些情况下,需求也是一点一点加的。

    2.2 开始编码实现

    2.2.1. 开始动手之前,先讨论技术方案,最后确定一种相对较优的,可行的技术方案。

    这个过程有可能是跟你的同事,团队成员,技术leader, 甚至就是你自己

    这个过程是不能少,要大体上保证技术是可行,至于技术实现细节,可以先跳过,

    但是有些技术细节很重要,必须要确认是否可以实现,因为关乎整个技术方案能否实施。

    我自己的做法:

    在文本编辑器中,有时会在笔记本上用笔,写出来方案的思路,列出一二三四,要尽量很详细。

    这个过程可能会迭代几次,具体看实际情况。--- 本身这个过程对开发人员本身是一件好事,因为能让我们处于思考,实践,优化,验证当中,这是一个正向反馈。但是这个过程应该随着我们的经验,技能,知识贮备,而减少才是正确的。

    2.2.2 整理出1中的技术方案以及实现思路 

    列出实现步骤一二三四

    定义方法名,输入输出 -- 可能还会定义一些方法内的全局变量,为了便于阅读,

    另外,建议,一个方法内不要有太多代码,而且最好是一个功能点一个方法,基本原则:高内聚,低耦合。

    可以看到上面的步骤就是拆解,将大的功能/需求拆分一个个小的功能/需求,

    其实也是面向过程编程的思想,不要觉得有了面向对象的编程,就认为面向过程的编程思想可以丢弃了。

    编程。

    然后就是具体的每个步骤的实现,一个一个,一点一点实现,遇到问题就专门去查,去解决,

    这期间也可以单独测试每个功能点,确保每个功能点,都是如预期的那样。

    一直到实现最后一个步骤, 完成所有的步骤,

    至此,就实现了整个需求,开始整个过程的自我测试,以及最后的程序检查

    https://blog.csdn.net/william_n/article/details/121642611

    2.2.3 上面的过程,不仅仅是完成一个需求那么简单的事情,

    最重要的点在于,培养解题思路,锻炼解决问题的能力,当然也会提高自己编码的质量和速度。

    2.2.4 编码过程中,也有一些应该遵循的原则

    具体根据不同语言的规范,以及项目规范而定。

    但是个人还是想说几句,参见下面文章

    开发人员自我检查程序流程 - 收集_william_n的博客-CSDN博客

    插入:

    切记,要及时提交,不然万一电脑出现问题,代码没有提交推送,又没有备份,就JJ了,反正我是几天遇到了,写了一个星期的代码突然因为Mac的磁盘坏掉无法开机,修复要两天。

    最后还是重新写了,花了半天的时间,还好因为上面的步骤,写得比较快。

    但是还是建议,完成一个小功能,或者一个步骤,就commit一次,推送一次,如果嫌弃太频繁,至少在下班前,提交一次,推送到远程仓库。 

    如果发现commit记录太多,可以另外解决。

    3. 思考

    什么时候,都不要忘记思考。

    不论干什么,都不要忘记思考,然后思考回顾,从中学习,总结,

    从而做优化,争取达到最优解,或者近于当下最优解

    后续补充

    ...

    3.问题/补充

    TBD

    4.参考

    开发人员自我检查程序流程 - 收集_william_n的博客-CSDN博客

    PHP - 代码简写 - 收集/实践_william_n的博客-CSDN博客_php 简写

    后续补充

    ...

    展开全文
  • 接下来我们了解一下什么是线程安全,怎样才能做到线程安全。 这些问题解答后,多线程这头大怪兽自然就会变成温顺的小猫咪。可上图关小猫咪屁事!生活中我们口头上经常说的一句话就是“关你屁事”,大家想一想,为...
  • 如果执行带包名的class文件,需要到包的最外层执行 ,也就是例如: java com.testing.class1.HelloJava 4、IDE(集成开发环境):就是集成了编译、执行等功能的能够运行代码的工具 5、本地新建一个txt文件,编写代码,...
  • 新手和高手之间的差别主要也体现在规范上,这里勇哥主要给大家分享python的PEP8规范,希望大家在编写代码的时候按照规范要求去编写。1、 变量名,函数名,方法名的命名1) 命名的名字要力求见名知意;2) 命名不要和...
  • 该文档为大型公司编码要求,全文档分为12个小节,详细描述了代码规范,着为进入大公司打下了良好的基础,也有利于别人的阅读。
  • ubuntu编写代码常见操作

    千次阅读 2020-04-25 21:40:36
    全选(高亮显示):按esc后,然后ggvG或者ggVG 全部复制:按esc后,然后ggyG 全部删除:按esc后,然后dG 关掉行号显示:set nonu
  • 大家都用过Vc自代的工具Spy++,它可以通过鼠标来捕捉窗口,得到窗口的信息。在MSDN里面找到了一个相关的API:RealChildWindowFromPoint...... 关键字:spy,api,window,RealChildWindowFromPoint
  • Readme of PyAssistant ... PyAssistant 的目的是当您使用 Notepad ++ 编写 Python 代码时,为您提供自动完成功能,通过扫描当前代码和自动缩进功能生成它。 1. install 1.1 Installing the PythonSc
  • Pycharm改进和编写代码

    千次阅读 2021-03-08 02:43:05
    PyCharm包含用于编写代码的各种标准,其中包含适用于Python的适当缩进。 这有助于提高代码标准并在PyCharm编辑器中编写完整的代码。改进代码完成PyCharm中的代码完成非常独特。 您可以使用许多其他功能进一步增强它...
  • 怎样提升CSS代码质量的。本文更偏向于样式使用技巧,前两篇偏向于代码风格与规范。不同于其他很多属性,盒模型中垂直方向上的Margin会在相遇时发生崩塌,也就是说当某个元素的底部Margin与另一个元素的顶部Margin...
  • 代码编写流程

    万次阅读 2019-12-02 17:11:18
    第一步:整理思路、画出思维导图(可以手绘) 第二步:找到其中的关键对象、设计结构体 第三步:设计好要使用的数据结构(出、...第五步:编写代码、考虑代码扇入扇出。 第六步:编写测试用例、完成代码测试 ...
  • 编写PHP代码总结_php

    2021-04-30 07:16:26
    1- 编写模块化代码良好的php代码应该是模块化代码。PHP的面向对象的编程功能是一些特别强大的工 具,可以把你的应用程序分解成函数或方法。你应该尽可能多的从你的应用程序的服务器端分开前端的html/css/JavaScript...
  • 一、Linux系统下:终端输入Python ,Python2, 都是默认进入的2版本终端输入python3, 默认进入3版本, exit() 退出二、编写python的程序方法打开终端——输入python3 或者python2 进入相应的交互环境;(>>>交互...
  • 如何编写优雅的代码

    千次阅读 2019-01-11 11:02:58
    在讨论关于如何编写优雅代码的观点之前,先抛出个问题,希望我们对这一点能够达成共识: 为什么要编写优雅的代码? 有的人说,代码写得好不好无关紧要,能完成功能,并且不出什么bug就好了。 有的人说,项目进度...
  • Writing Fast MATLAB Code Pascal Getreuer, June 2006 Contents 1 The Proler 2 2 Array Preallocation 3 3 Vectorization 5 3.1 Vectorized Computations . . . . . . . . . . . . . . . . . ....
  • 方法1:手工编写代码 大多数刚学习 Java 的程序员,都会怀着一种崇敬的仪式感,一字一句地在开发工具上敲出以下代码: public class Test { public static void main(String[] args) { System.out.println("Hello ...
  • html代码编写教程

    千次阅读 2021-06-13 14:47:51
    html代码编写教程[2021-02-16 18:08:40]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐...
  • Service层代码编写

    千次阅读 2018-08-25 15:30:14
    Service层学习总结: 1、在包下新增Service包 2、在包类添加CategoryService接口,在接口中添加需要用到的方法。 3、添加CategoryServiceImpl类,并实现CategoryService的方法,在类上添加注解@Service;...
  • iOS APP启动画面必须是静态图片。但是你可以在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 里面载入你写着动画的view。在动画结束以后再进入...
  • 如何使用Visual Studio 编写代码

    千次阅读 2019-09-27 17:08:38
    Visual Studio for mac(微软代码编辑器),简称VS,是一个基本完整...如何使用Visual Studio 编写代码?[dl]15-1344[/dl]源编辑器可靠的源编辑器对简单高效地编写代码至关重要。 Visual Studio for Mac 提供了成熟的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 335,590
精华内容 134,236
关键字:

怎样编写代码