代碼審查:程序員內煉之道

摘要:“關注并弄清楚橋梁修建細節,否則你建起來的橋梁有可能坍塌。”代碼審查更重要的是一種技術分享或者代碼共享。程序員如何提升自我修煉之道,歡迎來支招。

代碼審查更重要的是一種技術分享或者代碼共享。在審查過程中,通過被審查者的講解、審查人員的質詢來發現問題并傳播知識。如果審查者做過相關東西并且有更好的解決方案,能夠提出來也可以做到一定的技術分享;同時被審查者如果被審查出的問題較多,也可以在一定程度上提高對技術的追求。

此前,我們曾發表過《 高效代碼審查的10大經驗 》,文章提到:1.代碼審查要求團隊有良好的文化;2.謹慎的使用審查中問題的發現率作為考評標準;3.控制每次審查的代碼數量;4.帶著問題去進行審查;5.所有的問題和修改,必須由原作者進行確認;6.利用代碼審查激活個體“能動性”;7.在非正式,輕松的環境下進行代碼審查;8.提交代碼前自我審查,添加對代碼的說明;9.實現中記錄筆記可以很好的提高問題發現率;10.使用好的工具進行輕量級的代碼審查。

開發者可分為資深開發、高級開發、中級開發、初級開發四個級別,針對不同的級別,如何進行代碼分配審查工作呢。本文我們將探討程序員如何提升自我修煉之道。

閱讀能力,追蹤及支持

  1. 提高代碼的可讀性比如代碼的完整性,代碼潔凈、同行代碼審查,通過查看代碼指南從而獲取一些觀點。
  2. 改進應用程序追蹤和支持性——與任何運行你程序的開發者進行交談,從對方得知需要改進的地方,吸取好的建議,為代碼審查列一份清單。

可靠性和可測性

  1. .NET重構:注射質量,可測性以及給現有系統添加架構。
  2. 給斷開的特定服務器繪制一份草圖。
  3. 審查所有重試循環和確保他們的行為是合理的。

性能、安全、并發

  1. ? 在性能部分閱讀CLRS并做一些實踐,Programming pearls(編程珠璣)將會對你有所幫助。
  2. ?托管代碼的安全審查 。
  3. 并發——閱讀有關.net線程模型(查看文檔);了解異步同步模型以及它的工作原理,嘗試在紙上繪畫出并發工作時狀態,查看訪問資源是否有問題。

軟件設計:

  1. 閱讀關于模式方面的書籍。
  2. 嘗試用不同的模式進行編碼。
  3. 閱讀框架中的依賴注入以及流控制方面的書籍(MVC, MVVM)這個網站涵蓋了許多有用的資源,可以參考。

另外,在代碼審查期間,使用TODO和FIXME來標記代碼是非常有好處的。

各位開發者,你們所在的公司有嚴格的代碼審查機制嗎?如果有,歡迎與我們分享經驗。

英文出自: MSDN(編譯/夏夢竹)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449682.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

扎實的基礎是成功的法寶

轉載鏈接:https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基礎是好成績的根本,無論做任何事情,基本功的訓練是成功的前提:“還沒有學會走,就想學跑,那不行,肯定會摔跟頭。”這是成功人士的經驗之談。要建成高樓大廈,地基必須打好。…

發送qq郵件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 寫成了一個通用的函數接口,想直接用的話,把參數…

排序代碼(python,c++) 及 基本算法復雜度

0.導語 本節為手撕代碼系列之第一彈,主要來手撕排序算法,主要包括以下幾大排序算法: 直接插入排序 冒泡排序 選擇排序 快速排序 希爾排序 堆排序 歸并排序 1.直接插入排序 【算法思想】 每一步將一個待排序的記錄,插入到前面…

TCP/IP四層模型與OSI參考模型

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 TCP/IP四層模型: 1.鏈路層(數據鏈路層/網絡接口層):包括操作系統中的設備驅動程序、計算…

Metal日記:使用步驟指南

本文參考資料: juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal處理邏輯 無論是CoreImage、GPUImage框架&…

還駕馭不了4核? 別人已模擬出百萬核心上的并行

摘要:不管是臺式機還是筆記本,四核雙核都已經不是新鮮的事了。計算機領域的你可能已經認識到了給電腦選配4核的處理器完全是一種浪費,因為大多數的程序都不支持多核心的并行處理。然而斯坦福的計算機科學家最近公布,他們已經模擬出…

docker安裝并運行ubuntu

拉取鏡像 docker pull dorowu/ubuntu-desktop-lxde-vnc 運行容器: docker run -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc 之后就可以http://localhost:6080/

Django內置權限擴展案例

當Django的內置權限無法滿足需求的時候就自己擴展吧~ 背景介紹 overmind項目使用了Django內置的權限系統,Django內置權限系統基于model層做控制,新的model創建后會默認新建三個權限,分別為:add、change、delete,如果給…

Java 從入門到高級學習路線

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Java 從入門到高級學習路線《一》1.Jvm 部分Jvm 內存模型、Jvm 內存結構、Jvm 參數調優、Java 垃圾回收《二》Java 基礎部分1.必須會使用…

Flutter Mac iOS 環境配置

官方文檔:flutter.io/docs/get-st… 1.需要的命令行工具 bash curl git 2.x mkdir rm unzip which 2.SDK下載地址 flutter_macos_v1.0.0-stable.zip storage.googleapis.com/flutter_inf… 3.解壓Flutter SDK cd ~/Flutter/SDK $ unzip ~/Downloads/flutter_macos_v…

多線程研究1

單線程: from urllib.request import urlretrieve import time import random starttime.time() fopen(E:\Python\py\web\hh.txt,r)#打開存放URL的文件 af.readlines() f.close() for i in a:brandom.randint(0,30)urlretrieve(i,%d.png%b) endtime.time() print(…

android viewpage預加載和懶加載問題

1、本人理解懶加載和預加載問題某種情況下可以歸結為一類問題,下面我就說一下我遇到的預加載問題和懶加載問題及解決的相應方法: - [1 ] 預加載問題 描述:我用到了三個fragment、viewpage及tablayout實現點擊切換、滑動切換。 …

大數據,且行且思

“大數據”概念于20世紀90年代被提出,最初只是對一些在一定時間內無法用傳統方法進行抓取、管理和處理的數據的統稱。隨著時間的推移和科技的發展以及物聯網、移動互聯網、SNS的興起,每年產生的數據量都以幾何級數增長,《IDC Digital Univers…

IntelliJ IDEA中新建JAVA WEB項目、maven項目

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 在IntelliJ IDEA 中新建一個Web應用項目。 1、 在主界面頂部菜單欄依次“File”-"New"-"Project..." 2、在對話框中…

S/4HANA業務角色概覽之訂單到收款篇

2019獨角獸企業重金招聘Python工程師標準>>> 大家好我叫Sean Zhang,中文名張正永。目前在S/4HANA產品研發部門任職產品經理,而這一階段要從2017年算起,而在那之前接觸更多還是技術類的,比如做過iOS、HANA、ABAP、UI5等…

掘金量化的一個代碼,對本人寫策略避免入坑有重要意義

# codingutf-8from __future__ import print_function, absolute_import, unicode_literalsfrom gm.api import *import numpy as npdef init(context):# 選擇的兩個合約context.symbol [DCE.j1901, DCE.jm1901]# 訂閱歷史數據subscribe(symbolscontext.symbol,frequency1d,co…

C++ STL學習筆記

C STL學習筆記一 為何要學習STL: 數據結構與算法是編程的核心,STL中包含各種數據結構和優秀的算法,確實值得深入學習,本文中雖然著重使用,但希望有心的朋友能多看看相關數據結構的實現,對于C語言確實會有較…

ItelliJ IDEA開發工具使用—創建一個web項目

轉自:https://blog.csdn.net/wangyang1354/article/details/50452806概念需要明確一下IDEA中的項目(project)與eclipse中的項目(project)是不同的概念,IDEA的project 相當于之前eclipse的workspace,IDEA的M…

AKOJ-2037-出行方案

鏈接:https://oj.ahstu.cc/JudgeOnline/problem.php?id2037 題意: 安科的夏天真是不一般的熱,避免炎熱,伍學長因此想為自己規劃一個校園出行方案,使得從宿舍出發到校園的各個地方距離花費時間最短。我們已知校園一共有…

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy):#自定義參數,每次買入1800手param…