精华内容
下载资源
问答
  • 代码整洁 vs 代码肮脏

    万次阅读 多人点赞 2019-09-16 12:05:12
    写出整洁的代码,是每个程序员的追求。《clean code》指出,要想写出好的代码,首先得知道什么是肮脏代码、什么是...国内一个更适合的词汇:屎山,虽然不是很文雅但是更加客观,程序员既是受害者也是加害者。 对...

    写出整洁的代码,是每个程序员的追求。《clean code》指出,要想写出好的代码,首先得知道什么是肮脏代码、什么是整洁代码;然后通过大量的刻意练习,才能真正写出整洁的代码。

    WTF/min是衡量代码质量的唯一标准,Uncle Bob在书中称糟糕的代码为沼泽(wading),这只突出了我们是糟糕代码的受害者。国内有一个更适合的词汇:屎山,虽然不是很文雅但是更加客观,程序员既是受害者也是加害者。

    对于什么是整洁的代码,书中给出了大师们的总结:

    • Bjarne Stroustrup:优雅且高效;直截了当;减少依赖;只做好一件事
    • Grady booch:简单直接
    • Dave thomas:可读,可维护,单元测试
    • Ron Jeffries:不要重复、单一职责,表达力(Expressiveness)

    其中,我最喜欢的是表达力(Expressiveness)这个描述,这个词似乎道出了好代码的真谛:用简单直接的方式描绘出代码的功能,不多也不少。

    本文记录阅读《clean code》之后个人“深有同感”或者“醍醐灌顶”的一些观点。

    一、命名的艺术

    坦白的说,命名是一件困难的事情,要想出一个恰到好处的命名需要一番功夫,尤其我们的母语还不是编程语言所通用的英语。不过这一切都是值得了,好的命名让你的代码更直观,更有表达力。

    好的命名应该有下面的特征:

    1.1 名副其实

    好的变量名告诉你:是什么东西,为什么存在,该怎么使用

    如果需要通过注释来解释变量,那么就先得不那么名副其实了。

    下面是书中的一个示例代码,展示了命名对代码质量的提升

    # bad code
    def getItem(theList):
       ret = []
       for x in theList:
          if x[0] == 4:
             ret.append(x)
       return ret
    
    # good code
    def getFlaggedCell(gameBoard):
       '''扫雷游戏,flagged: 翻转'''
       flaggedCells = []
       for cell in gameBoard:
          if cell.IsFlagged():
             flaggedCells.append(cell)
       return flaggedCells
    

    1.2 避免误导

    • 不要挂羊头卖狗肉
    • 不要覆盖惯用缩略语

    这里不得不吐槽前两天才看到的一份代码,居然使用了 l 作为变量名;而且,user居然是一个list(单复数都没学好!!)

    1.3 有意义的区分

    代码是写给机器执行,也是给人阅读的,所以概念一定要有区分度。

    # bad
    def copy(a_list, b_list):
        pass
    
    # good
    def copy(source, destination):
        pass
    

    1.4 使用读的出来的单词

    如果名称读不出来,那么讨论的时候就会像个傻鸟

    1.5 使用方便搜索的命名

    名字长短应与其作用域大小相对应

    1.6 避免思维映射

    比如在代码中写一个temp,那么读者就得每次看到这个单词的时候翻译成其真正的意义

    二、注释

    有表达力的代码是无需注释的:The proper use of comments is to compensate for our failure to express ourself in code.

    注释的适当作用在于弥补我们用代码表达意图时遇到的失败,这听起来让人沮丧,但事实确实如此。The truth is in the code, 注释只是二手信息,二者的不同步或者不等价是注释的最大问题。

    书中给出了一个非常形象的例子来展示:用代码来阐述,而非注释

    bad
    // check to see if the employee is eligible for full benefit
    if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
    
    good
    if (employee.isEligibleForFullBenefits())
    

    因此,当想要添加注释的时候,可以想想是否可以通过修改命名,或者修改函数(代码)的抽象层级来展示代码的意图。

    当然,也不能因噎废食,书中指出了以下一些情况属于好的注释

    • 法务信息
    • 对意图的注释,为什么要这么做
    • 警示
    • TODO注释
    • 放大看似不合理之物的重要性

    其中个人最赞同的是第2点和第5点,做什么很容易通过命名表达,但为什么要这么做则并不直观,特别涉及到专业知识、算法的时候。另外,有些第一感觉“不那么优雅”的代码,也许有其特殊愿意,那么这样的代码就应该加上注释,说明为什么要这样,比如为了提升关键路径的性能,可能会牺牲部分代码的可读性。

    最坏的注释就是过时或者错误的注释,这对于代码的维护者(也许就是几个月后的自己)是巨大的伤害,可惜除了code review,并没有简单易行的方法来保证代码与注释的同步。

    三、函数

    3.1 函数的单一职责

    一个函数应该只做一件事,这件事应该能通过函数名就能清晰的展示。判断方法很简单:看看函数是否还能再拆出一个函数。

    函数要么做什么do_sth, 要么查询什么query_sth。最恶心的就是函数名表示只会query_sth, 但事实上却会do_sth, 这使得函数产生了副作用。比如书中的例子

    public class UserValidator {
        private Cryptographer cryptographer;
        public boolean checkPassword(String userName, String password) {
            User user = UserGateway.findByName(userName);
            if (user != User.NULL) {
                String codedPhrase = user.getPhraseEncodedByPassword();
                String phrase = cryptographer.decrypt(codedPhrase, password);
                if ("Valid Password".equals(phrase)) {
                    Session.initialize();
                    return true;
                }
            }
            return false;
        }
    }
    

    3.2 函数的抽象层级

    每个函数一个抽象层次,函数中的语句都要在同一个抽象层级,不同的抽象层级不能放在一起。比如我们想把大象放进冰箱,应该是这个样子的:

    def pushElephantIntoRefrige():
        openRefrige()
        pushElephant()
        closeRefrige()
    

    函数里面的三句代码在同一个层级(高度)描述了要完成把大象放进冰箱这件事顺序相关的三个步骤。显然,pushElephant这个步骤又可能包含很多子步骤,但是在pushElephantIntoRefrige这个层级,是无需知道太多细节的。

    当我们想通过阅读代码的方式来了解一个新的项目时,一般都是采取广度优先的策略,自上而下的阅读代码,先了解整体结构,然后再深入感兴趣的细节。如果没有对实现细节进行良好的抽象(并凝练出一个名副其实的函数),那么阅读者就容易迷失在细节的汪洋里。

    某种程度看来,这个跟金字塔原理也很像
    file

    每一个层级都是为了论证其上一层级的观点,同时也需要下一层级的支持;同一层级之间的多个论点又需要以某种逻辑关系排序。pushElephantIntoRefrige就是中心论点,需要多个子步骤的支持,同时这些子步骤之间也有逻辑先后顺序。

    3.3 函数参数

    函数的参数越多,组合出的输入情况就愈多,需要的测试用例也就越多,也就越容易出问题。

    输出参数相比返回值难以理解,这点深有同感,输出参数实在是很不直观。从函数调用者的角度,一眼就能看出返回值,而很难识别输出参数。输出参数通常逼迫调用者去检查函数签名,这个实在不友好。

    向函数传入Boolean(书中称之为 Flag Argument)通常不是好主意。尤其是传入True or False后的行为并不是一件事情的两面,而是两件不同的事情时。这很明显违背了函数的单一职责约束,解决办法很简单,那就是用两个函数。

    3.4 Dont repear yourself

    在函数这个层级,是最容易、最直观实现复用的,很多IDE也难帮助我们讲一段代码重构出一个函数。

    不过在实践中,也会出现这样一种情况:一段代码在多个方法中都有使用,但是又不完全一样,如果抽象成一个通用函数,那么就需要加参数、加if else区别。这样就有点尴尬,貌似可以重构,但又不是很完美。

    造成上述问题的某种情况是因为,这段代码也违背了单一职责原则,做了不只一件事情,这才导致不好复用,解决办法是进行方法的细分,才能更好复用。也可以考虑template method来处理差异的部分。

    四、测试

    非常惭愧的是,在我经历的项目中,测试(尤其是单元测试)一直都没有得到足够的重视,也没有试行过TDD。正因为缺失,才更感良好测试的珍贵。

    我们常说,好的代码需要有可读性、可维护性、可扩展性,好的代码、架构需要不停的重构、迭代,但自动化测试是保证这一切的基础,没有高覆盖率的、自动化的单元测试、回归测试,谁都不敢去修改代码,只能任其腐烂。

    即使针对核心模块写了单元测试,一般也很随意,认为这只是测试代码,配不上生产代码的地位,以为只要能跑通就行了。这就导致测试代码的可读性、可维护性非常差,然后导致测试代码很难跟随生产代码一起更新、演化,最后导致测试代码失效。所以说,脏测试 - 等同于 - 没测试。

    因此,测试代码的三要素:可读性,可读性,可读性。

    对于测试的原则、准则如下:

    • You are not allowed to write any production code unless it is to make a failing unit test pass. 没有测试之前不要写任何功能代码
    • You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 只编写恰好能够体现一个失败情况的测试代码
    • You are not allowed to write any more production code than is sufficient to pass the one failing unit test. 只编写恰好能通过测试的功能代码

    测试的FIRST准则:

    • 快速(Fast)测试应该够快,尽量自动化。
    • 独立(Independent) 测试应该应该独立。不要相互依赖
    • 可重复(Repeatable) 测试应该在任何环境上都能重复通过。
    • 自我验证(Self-Validating) 测试应该有bool输出。不要通过查看日志这种低效率方式来判断测试是否通过
    • 及时(Timely) 测试应该及时编写,在其对应的生产代码之前编写

    该文章通过 https://openwrite.cn/ 工具创造并群发。

    展开全文
  • Python10行以内代码什么高端操作

    万次阅读 多人点赞 2020-03-30 16:01:14
    Python10行以内代码什么高端操作

    Python10行以内代码能有什么高端操作

    Python凭借其简洁的代码,赢得了许多开发者的喜爱。因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的操作。下面我们来看看,我们用不超过10行代码能实现些什么有趣的功能。

    一、生成二维码

    二维码作为一种信息传递的工具,在当今社会发挥了重要作用。而生成一个二维码也非常简单,在Python中我们可以通过MyQR模块了生成二维码,而生成一个二维码我们只需要2行代码,我们先安装MyQR模块,这里选用国内的源下载:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ myqr
    

    安装完成后我们就可以开始写代码了:

    from MyQR import myqr	# 注意大小写
    myqr.run(words='http://www.baidu.com')	# 如果为网站则会自动跳转,文本直接显示,不支持中文
    

    我们执行代码后会在项目下生成一张二维码。当然我们还可以丰富二维码:

    from MyQR import myqr
    myqr.run(
        words='http://www.baidu.com',	# 包含信息
        picture='lbxx.jpg',			# 背景图片
        colorized=True,			# 是否有颜色,如果为False则为黑白
        save_name='code.png'	# 输出文件名
    )
    

    效果图如下:
    在这里插入图片描述
    另外MyQR还支持动态图片。

    二、生成词云

    词云是数据可视化的一种非常优美的方式,我们通过词云可以很直观的看出一些词语出现的频率高低。使用Python我们可以通过wordcloud模块生成词云,我们先安装wordcloud模块:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ wordcloud
    

    然后我们就可以写代码了:

    from wordcloud import WordCloud
    wc = WordCloud()	# 创建词云对象
    wc.generate('Do not go gentle into that good night')	# 生成词云
    wc.to_file('wc.png')	# 保存词云
    

    执行代码后生成如下词云:在这里插入图片描述
    当然这只是最简单的词云,词云更详细的操作可以参见WordCloud生成卡卡西忍术词云

    三、批量抠图

    抠图的实现需要借助百度飞桨的深度学习工具paddlepaddle,我们需要安装两个模块就可以很快的实现批量抠图了,第一个是PaddlePaddle:

    python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
    

    还有一个是paddlehub模型库:

    pip install -i https://mirror.baidu.com/pypi/simple paddlehub
    

    更详细的安装事项可以参见飞桨官网:https://www.paddlepaddle.org.cn/

    接下来我们只需要5行代码就能实现批量抠图:

    import os, paddlehub as hub
    humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')		# 加载模型
    path = 'D:/CodeField/Workplace/PythonWorkplace/GrapImage/'	# 文件目录
    files = [path + i for i in os.listdir(path)]	# 获取文件列表
    results = humanseg.segmentation(data={'image':files})	# 抠图
    

    抠图效果如下:

    其中左边为原图,右边为抠图后填充黄色背景图。

    四、文字情绪识别

    在paddlepaddle面前,自然语言处理也变得非常简单。实现文字情绪识别我们同样需要安装PaddlePaddle和Paddlehub,具体安装参见中内容。然后就是我们的代码部分了:

    import paddlehub as hub		
    senta = hub.Module(name='senta_lstm')		# 加载模型
    sentence = [	# 准备要识别的语句
        '你真美', '你真丑', '我好难过', '我不开心', '这个游戏好好玩', '什么垃圾游戏',
    ]
    results = senta.sentiment_classify(data={"text":sentence})	# 情绪识别
    # 输出识别结果
    for result in results:
        print(result)
    

    识别的结果是一个字典列表:

    {'text': '你真美', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9602, 'negative_probs': 0.0398}
    {'text': '你真丑', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0033, 'negative_probs': 0.9967}
    {'text': '我好难过', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.5324, 'negative_probs': 0.4676}
    {'text': '我不开心', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.1936, 'negative_probs': 0.8064}
    {'text': '这个游戏好好玩', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9933, 'negative_probs': 0.0067}
    {'text': '什么垃圾游戏', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0108, 'negative_probs': 0.9892}
    

    其中sentiment_key字段包含了情绪信息,详细分析可以参见Python自然语言处理只需要5行代码

    五、识别是否带了口罩

    这里同样是使用PaddlePaddle的产品,我们按照上面步骤安装好PaddlePaddle和Paddlehub,然后就开始写代码:

    import paddlehub as hub
    # 加载模型
    module = hub.Module(name='pyramidbox_lite_mobile_mask')
    # 图片列表
    image_list = ['face.jpg']
    # 获取图片字典
    input_dict = {'image':image_list}
    # 检测是否带了口罩
    module.face_detection(data=input_dict)
    

    执行上述程序后,项目下会生成detection_result文件夹,识别结果都会在里面,识别效果如下:
    在这里插入图片描述

    六、简易信息轰炸

    Python控制输入设备的方式有很多种,我们可以通过win32或者pynput模块。我们可以通过简单的循环操作来达到信息轰炸的效果,这里以pynput为例,我们需要先安装模块:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pynput
    

    在写代码之前我们需要手动获取输入框的坐标:

    from pynput import mouse
    # 创建一个鼠标
    m_mouse = mouse.Controller()
    # 输出鼠标位置
    print(m_mouse.position)
    

    可能有更高效的方法,但是我不会。

    获取后我们就可以记录这个坐标,消息窗口不要移动。然后我们执行下列代码并将窗口切换至消息页面:

    import time
    from pynput import mouse, keyboard
    time.sleep(5)
    m_mouse = mouse.Controller()    # 创建一个鼠标
    m_keyboard = keyboard.Controller()  # 创建一个键盘
    m_mouse.position = (850, 670)       # 将鼠标移动到指定位置
    m_mouse.click(mouse.Button.left) # 点击鼠标左键
    while(True):
        m_keyboard.type('你好')		# 打字
        m_keyboard.press(keyboard.Key.enter)	# 按下enter
        m_keyboard.release(keyboard.Key.enter)	# 松开enter
        time.sleep(0.5)	# 等待 0.5秒
    

    我承认,这个超过了10行代码,而且也不高端。使用前QQ给小号发信息效果如下:
    在这里插入图片描述

    七、识别图片中的文字

    我们可以通过Tesseract来识别图片中的文字,在Python中实现起来非常简单,但是前期下载文件、配置环境变量等稍微有些繁琐,所以本文只展示代码:

    import pytesseract
    from PIL import Image
    img = Image.open('text.jpg')
    text = pytesseract.image_to_string(img)
    print(text)
    

    其中text就是识别出来的文本。如果对准确率不满意的话,还可以使用百度的通用文字接口。

    八、绘制函数图像

    图标是数据可视化的重要工具,在Python中matplotlib在数据可视化中发挥重要作用,下面我们来看看使用matplotlib如何绘制一个函数图像:

    import numpy as np 
    from matplotlib import pyplot as plt 
     
    x = np.arange(1,11) 	# x轴数据
    y =  x * x +  5 		# 函数关系
    plt.title("y=x*x+5") 	# 图像标题
    plt.xlabel("x") 	# x轴标签
    plt.ylabel("y") 	# y轴标签
    plt.plot(x,y) 	# 生成图像
    plt.show()	# 显示图像
    

    生成图像如下:
    在这里插入图片描述

    九、人工智能

    下面给大家介绍的是独家的AI人工智能,一般不外传的。这个人工智能可以回答许多问题,当然人工智能现在还在发展阶段,想要理解人类的语言还差很多。废话不多说,下面来看看我们的人工智能Fdj:

    while(True):
        question = input()
        answer = question.replace('吗', '呢')
        answer = answer.replace('?', '!')
        print(answer)
    

    下面我们来看看简单的测试:

    你好吗?
    我好呢!
    你吃饭了吗?
    我吃饭了呢!
    你要睡了吗?
    我要睡了呢!
    

    最后送大家一套2020最有趣的Pyhon项目实战视频教程,点击此处 进来获取 跟着练习下,希望大家一起进步哦!
    看来我们“小复”还是比较智能的。

    展开全文
  • 构造代码块的作用

    千次阅读 2019-02-25 17:35:33
    Java常见代码块的作用与区别   1. 局部代码作用在方法当中,作用是控制变量的生命周期: public void show(){ { System.out.println("局部代码块运行!"); } }123456 在程序中当我们定义完成一个...

     

    构造代码块的生命周期跟类一直,成员变量的生命周期跟方法一直

     

    Java常见代码块的作用与区别

     

    1. 局部代码块
    作用在方法当中,作用是控制变量的生命周期:
    public void show(){
    {
    System.out.println("局部代码块运行!");
    }
    }123456
    在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间。因此就有了局部代码块。
    2. 构造代码块
    作用在类的定义Body中,作用是给类的部分字段统一初始化:
    public class Apple {
    private String size;
    //构造代码块
    {
    System.out.println("构造代码块运行!");
    size = "E";
    }
    }
    12345678910
    构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。所以理所当然的,构造代码块在构造函数之前执行。
    3. 静态代码块
    作用有两个:
    (1)给类的静态变量赋值;
    (2)声明静态变量;
    作用在类的Body中,对类中的静态变量初始化:
    public class APP {
    static int x, y; // 静态变量
    static {
    x = 5; // 给静态变量x赋值
    }
    public static void myMethod() {
    y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值
    }
    public static void main(String[] args) {
    x--;
    myMethod();
    System.out.println(x + y + ++x);
    }
    }
    输出:23

     

    展开全文
  • 静态代码块及作用

    千次阅读 2019-09-19 09:00:34
    它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。... 一个类中可以多个静态代码块 static{ //静态代码块 } 在代码设计中可以用来创建可以单例的对象,不用...
    1. 它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
    2. 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
    3. 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
    4. 一个类中可以有多个静态代码块

    static{

       //静态代码块

    }

     

    在代码设计中可以用来创建可以单例的对象,不用每次调用一个相同的对象时都要重新new一次,提高性能

    展开全文
  • 如题,比如这段代码有什么用 @WebFilter(filterName="authority" , urlPatterns={"/*"} , initParams={ @WebInitParam(name="encoding", value="GBK"), @WebInitParam(name="loginPage", value="/login.jsp"),...
  • Java中代码块的作用

    千次阅读 2018-04-17 19:56:23
    Java中用{ }括起来的代码段就是代码块,他分为如下几种类型 位置作用局部代码块在main方法里面给变量限定生命周期,局部代码块的变量在执行结束后会被Java回收构造代码块在类的成员位置在每次执行构造方法前先执行...
  • 以下通过分析举例 document 对象的集合对象 来发现js代码位置的问题 参考document对象集合方法:  http://blog.csdn.net/asheandwine/article/details/78148842 接下来通过一个例子说明上述集合对象的用法:...
  • C语言代码调试是什么意思,是不是代码都要调试,调试的作用是什么
  • css常用代码大全,html+css代码

    万次阅读 多人点赞 2017-12-28 21:24:46
    css常用代码大全,html+css代码 html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码。 一.文本设置 1、font-size: 字号参数  2、font-style: 字体格式 3、font-weight: 字体粗细 ...
  • JAVA静态代码块的作用

    千次阅读 2018-03-29 17:09:57
    一 般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情 况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动...
  • 代码

    千次阅读 2017-02-02 21:21:17
    代码块是用{}花括号括起来的一段代码 可以分为四类 ·普通代码块 ·构造代码块 ·静态代码块 ·同步代码块 1、 普通代码块 直接在一个方法中出现的”{}”就称为普通代码块public class Test...
  • 在类的局部位置 作用:限定当前变量的声明周期 *变量x在类中只使用一次, 用一个局部代码块,是为了在代码块结束后,内存自动释放,减少内存的使用 是顺序执行的,只是在执行结束后,立即消失。* main(.....
  • 这几天,红警1的开源代码重现江湖,这个20年前,甚至25年前的代码...那么如果我们也想写出如此优美的代码,应该注意的事项哪些?本文将讲述3个编码时需要注意的部分,并着重讲解如何编写出规范的代码注释并加以利用。
  • ionic代码压缩与代码混淆

    万次阅读 2015-11-30 17:06:17
    ionic代码压缩与代码混淆 原文 本文解释了ionic工程发布之前的最后一步,即代码压缩(获取更好的性能)以及代码混淆(以免源码被有心者轻易获取)。包括以下步骤: (cordova hook)检查javascript:这一步需要...
  • Java常见代码块的作用与区别

    千次阅读 2018-01-23 19:42:14
    代码块中声明的变量的作用域只在这个 1. 局部代码作用在方法当中,作用是控制变量的生命周期: public void show(){ { System.out.println("局部代码块运行!...因此就了局部代码块。...
  • PhpStorm代码编辑区竖线的用途

    千次阅读 2018-09-12 11:36:37
    相信经常用PhpStorm的童鞋都知道代码这么一条竖线,但是知道这个竖线究竟是干嘛的么? 相传是古时代的编辑器是没有自动折行的功能的,而且终端分辨率的问题,一行只能显示80个字符,因此很多上古时代过来的人都...
  • 目录例子尝试用途 例子 以引用Markdown的数学公式为例。 预览: E = mc^2 这是个数学公式,但是想打出源代码(比如说想介绍一下这个代码的使用)的时候却不知道该怎么操作了。 其实的人想到了,直接在...
  • 代码评审在我们内部叫Code Review,其两个目的。第一也是最主要的目的是检查代码的质量,第二是学习一些优秀的代码,大家关心的可能是第一点。对入职时间不长的新人,需要监控其代码质量,纠正其在编写代码中的...
  • JAVA代码重构–改善既有代码的设计(一) 本文主要借鉴了<重构 改善既有代码的设计>与<设计模式>这两本书; 主要解释重构的原理(principles)和最佳实践方式(best practices),并指出...
  • JS代码不起作用解决方法

    千次阅读 2020-02-07 21:46:58
    JS代码不起作用解决方法确定js文件是否引入确定js函数与参数以及变量填写是否正确以上做好后还不行的话,清除缓存,清除缓存,清除缓存 确定js文件是否引入 <script type="text/javascript" src="/js/xxx.js">...
  • 【java】java构造代码块的作用{}

    千次阅读 2018-09-23 13:46:07
    构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。 package test922; public class ...
  • Android Studio Unknown attribute 布局文件中代码提示无作用 更新到最新版的Android Studio,app的build.gradle如下 compileSdkVersion 28 defaultConfig { applicationId "**********" minSdkVersion...
  • java-代码块以及代码块执行顺序

    千次阅读 2017-06-24 16:40:44
    局部代码块:方法中,局部位置,作用:限定变量作用范围和生命周期。 构造代码块:在类中方法外(成员位置),用{}括起来的代码。 每次调用构造方法执行前,都会执行构造代码块,作用:对对象进行初始化。 静态...
  • 一、观察一段源码与结果 public class StaticDemo { ...System.out.println("static前代码块执行顺序为"+i); i=i+1; } { System.out.println("非static代码块执行顺序为"+i); i=i+1; } public StaticDem
  • 究竟怎样写代码才算是好代码

    万次阅读 多人点赞 2016-09-21 16:05:06
    代码是最价值的交付物。我们需要好代码吗?在给“好代码”下个定义之前,这个问题无法回答。那么,究竟什么是好代码?看下面这段英文解释: ‘Good code’ is code that works, is bug free, and is readable and...
  • 代码测试之代码调试

    万次阅读 2011-09-04 12:53:13
    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】    代码测试是我们开发过程中很重要的一步。很多新入行的朋友都会习惯地认为测试只是测试部门的工作,事实上并不是这样。每一...
  • 托管代码和非托管代码的区别

    千次阅读 2018-09-10 19:53:48
    托管代码是一microsoft的中间语言,他主要的作用是在.NET FRAMEWORK的CLR执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段: 1. 源代码编译为托管代码,(所以源代码可以很...
  • C语言代码块的作用

    千次阅读 2014-07-08 16:42:16
    1、限定作用域 2、提早释放内存
  • 将Kotlin代码编译成Javascript 代码

    千次阅读 2018-02-09 16:33:59
    在Kotlin和Javascript平台的互操作过程中,往往会涉及Kotlin代码和 Javascript 代码相互转换的过程,本文主要介绍如何将Kotlin代码编译成Javascript 代码。 1,创建JavaScript的应用程序 首先创建一个新的应用...
  • 首先,让我们了解一下时间戳的作用:任何数字证书都是有效期的, 代码签名证书支持 1-3 年有效期。 然而,您的软件的生命周期一般都会更长,为了避免签名证书到期后需要重签软件和重新发布,必须使用免费提供的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,888,997
精华内容 1,155,598
关键字:

代码的作用有