1.è£è6ä¸åªäºè½¯ä»¶å¯ä»¥å¸è½½
2.作为 IT 从业人员,源码你觉得有什么工具大大提高了你的源码工作效率?
è£è6ä¸åªäºè½¯ä»¶å¯ä»¥å¸è½½
ä¸é¢æ¯å为è£è6çç³»ç»åºç¨ç²¾ç®å表ï¼ä» ä¾åè
ç³»ç»åºç¨ä¸»è¦æ¾å¨ä¸é¢å 个å°æ¹ï¼
/system/app ç³»ç»apk
/system/priv-app ç³»ç»apk
/system/delapp å¯å é¤ç第ä¸æ¹åºç¨
/cust/preinstalled/public/app ç³»ç»éæç第ä¸æ¹åºç¨çï¼æ¾å¨custååºå¯å é¤ï¼ä½æ¢å¤åºå设置çæ¶åè¿ä¼åºæ¥
ææodexåç¼å¨å é¤apkåå¯å é¤ï¼å¦æpushè¿å»ä¿®æ¹è¿çAPKæ´ä¸è½ä¿çodex
/system/app
AGPSProvider.apk AGPSå®ä½ ä¸å¯å
ApkBatchInstall.apk ç¨åºå®è£ ç¨ ä¸å¯å
BaiduInput_for_Huawei.apk è¾å ¥æ³ å¯å
BasicDreams.apk å¨æå£çº¸ å¯å
Bluetooth.apk èçåè½ ä¸å¯å
Calculator.apk 计ç®å¨ å¯å
Calendar.apk æ¥åçé¢ å 为pkgå称è·googleç¸åï¼å¦ææ³å®è£ google calendarï¼éè¦å é¤è¿ä¸ªapkï¼
并ä¸å é¤CalendarProvider.apkï¼ç¨gappséé¢çæ¿ä»£ï¼å¦åææéæ¶ä¼æ¥é
CalendarProvider.apk æ¥åæ°æ® åä¸
CertInstaller.apk è¯ä¹¦å®è£ ä¸å¯å
ChnCmccAutoReg.apk CMCCåºç¨ å¯å
CmccDMClient.apk CMCCå¢å¼ºå®åæå¡ ï¼
CountLapseTime.apk åèç¸å ³ å¦æä¸ç¨ççµç²¾çµï¼å¯ä»¥ä¸åå é¤
DocumentsUI.apk éæ©ææ¡£çé¢ ä¸å¯å
DownloadProviderUi.apk ä¸è½½çé¢ ä¸å¯å
Email.apk çµåé®ä»¶ å¯å
EmergencyData.apk å¤ä»½æ°æ®ç¨ å¦æä¸ç¨å为å¤ä»½å¯å
Exchange2.apk exchangeé®ç®± å¯å
FaceLock.apk 人è¸è§£é å¯å
Galaxy4.apk å¨æå£çº¸ å¯å
GameBox.apk 游æä¸å¿ å¯å
GoogleTTS.apk google text to speech 建议ä¸å
HoloSpiralWallpaper.apk å¨æå£çº¸ å¯å
HTMLViewer.apk HTMLæºç æ¥çå¨ å»ºè®®ä¸å
HuaweiPayService.apk å为æ¯ä» å¯å
Huawei_Swype_for_Huawei.apk æ»å¨è¾å ¥ å¯å
HwAllBackup_CMCC.apk å为å¤ä»½ å¦æç¨éå¤ä»½ä¸ç¨è¿ä¸ªï¼å¯å
HwAppObserver.apk 第ä¸æ¹ä¸»é¢ï¼ å¯å
HwBigData.apk å为大æ°æ®ï¼ å¯å
HwBluetoothImport.apk èçå¯¼å ¥å¯¼åºè系人 ä¸å¯å
HwCAService.apk 诺äºCAï¼æ¥å¿ï¼ å¯å
HwDeskClock.apk é¹é ççå
HwFileManager.apk å为æ件管çå¨ å¯å
HwFlashlight.apk æçµç ççå
HwFloatCalculator.apk æµ®å¨è®¡ç®å¨ å¯å
HwFloatCalendar.apk æµ®å¨æ¥å å¯å
HwFloatMms.apk æµ®å¨çä¿¡ å¯å
HwFloatNotePad.apk æµ®å¨è®°äºæ¬ å¯å
HwFloatTasks.apk æ¬æµ®èå å¯å
HwFMRadio.apk æ¶é³æº ççå
HwID.apk å为ID å¯å
HwInternetAudioService.apk äºèç½é³é¢IMCs 建议å é¤ï¼å¦æä» å»ç»è¿ä¼å¨åå°è¿è¡
HwLauncher6.apk å为æ¡é¢ ä¸ç¨çè¯å¯ä»¥å ï¼æ¯å¦ç¨google now luancherænova launcherå¯å®å ¨æ¿ä»£
HwLogCollectService.apk Logè®°å½æå¡ å¯å
HwLogTool.apk Logè®°å½å·¥å · å¯å
HwMediaCenter.apk é³ä¹å¯å ï¼ä½æ¯å é¤ä¹åéå±çé¢åå»ä¸ä¼åºç°é³ä¹ææ¾
HwMeWidget_Honor.apk å为éæwidget å¯å
HwMirror.apk éå ççå
HwMultiscreen.apk å为å¤å±äºå¨ å¯å
HwNotePad.apk å为记äºæ¬ å¯å
HwOUC.apk ç³»ç»å级æå¡ å¦æä¿®æ¹äºç³»ç»ååºå°±ä¸è½OTAå级äºï¼ççè¿ä¸ªä¹æ²¡ä»ä¹ç¨
HwPhoneService.apk å为ææºæå¡
HwPowerGenieEngine3.apk ççµç²¾çµ å¯å
HwProfileSwitcher.apk æ æ¯æ¨¡å¼åæ¢ ä¸ç¨å¯å
HwPushService.apk å为æ¨é 建议å é¤ï¼å¦æä» å»ç»è¿ä¼å¨åå°è¿è¡
HwRemoteController.apk é¥æ§å¨ ççå
HwSoundRecorder.apk å为å½é³æº å¯å
HwStartupGuide.apk å为åå§åå¯¼èª å¯å
HwSystemManager.apk ç³»ç»ç®¡çå¨ å¦æè¦ç¨æé管ççï¼å°±ä¿çï¼å¦åå¯å
HwThemeManager.apk ä¸»é¢ ä¸ç¨å为æ¡é¢çè¯å¯å
HwWeatherClock.apk å为天æ°widget å¯å
HwWiFiDirect.apk wifi directåè½ å»ºè®®ä¸å
HwWiFiHotspot.apk Wifiçç¹ ä¸å¯å
KeyChain.apk ç§é¥é¾ ä¸å¯å
LatinIME.apk googleé®ç å¯å
LiveWallpapers.apk å¨æå£çº¸ å¯å
LiveWallpapersPicker.apk å¨æå£çº¸éæ© å»ºè®®ä¸å
MagicSmokeWallpapers.apk å¨æå£çº¸ å¯å
Magnifier.apk æ¾å¤§é å¯å
MMIFunctionTest.apk å·¥åMMIæµè¯ 建议ä¸å
MMITest_II.apk å·¥åMMIæµè¯ 建议ä¸å
MyCalendar.apk æ¥åwidget å¯å
NfcNci.apk NFCåè½ ä¸å¯å
NoiseField.apk å¨æå£çº¸ å¯å
OMACP.apk é 置信æ¯ç¨äºOTAå级 å¦æä¸ç¨OTAå级就å¯ä»¥å æäº
PackageInstaller.apk å å®è£ çé¢ ä¸å¯å
PacProcessor.apk å¤ç代çèªå¨é ç½®ç ä¸å¯å
PhaseBeam.apk å¨æå£çº¸ å¯å
PhotoTable.apk å±ä¿ ççå
PicoTts.apk text to speech å¦æä¸ç¨googleè¯é³åè½å¯å é¤
PrintSpooler.apk æå° å¯å
ProfileViewer.apk è²ä¼¼é ç½®ç½ç»åæ°çï¼ å¯å ï¼
ProjectMenuAct.apk å·¥ç¨èå 建议ä¸å
Stk.apk SIMå¡STK 建议ä¸å
StreamingProvider.apk 串æµç¸å ³APNï¼ å¯å
SystemUI.apk ç³»ç»UI ä¸å¯å
TelephonyProvider.apk éè¯ä¿¡æ¯åå¨æå¡ ä¸å¯å
TouchpalModuleOEM.apk 触å®å ¬å ±å·ç ä¸ç¨å¯å
UEIAndroidServicesSDK.apk UEIå ¬å¸çé¥æ§é©±å¨åº ä¸ç¨é¥æ§çè¯å¯å
UserDictionaryProvider.apk ç¨æ·è¯å ¸ å¯å
VisualizationWallpapers.apk å¨æå£çº¸ å¯å
VLife_huawei.apk å¾®ä¹å¨æå£çº¸ ä¸ç¨çè¯å¯å
WAPPushManager.apk WAPæ¨é管ç ä¸ç¨çè¯å¯å
/system/priv-app/
ApplicationsProvider.apk åºç¨æ°æ®åº ä¸å¯å
BackupRestoreConfirmation.apk å¤ä»½æ¢å¤ ä¸å¯å
Browser.apk æµè§å¨ å¯å
Contacts.apk èç»äººçµè¯æ¬ ä¸å¯å
ContactsProvider.apk çµè¯æ¬åå¨ ä¸å¯å
DefaultContainerService.apk apké»è®¤å®è£ æå¡ ä¸å¯å
DownloadProvider.apk ä¸è½½ ä¸å¯å
ExternalStorageProvider.apk å¤é¨åå¨ ä¸å¯å
FusedLocation.apk å®ä½ç¸å ³ ä¸å¯å
Gallery2.apk å¾åºãç¸æº ä¸ç¨çè¯å¯å
GmsCore.apk Googleæå¡ å»ºè®®ä¸å
GoogleLoginService.apk Googleè´¦å·æå¡ å»ºè®®ä¸å
GoogleServicesFramework.apk Googleæå¡ å»ºè®®ä¸å
HiSpace.apk å为åºç¨å¸åºå¯å
HwPhoneFinder.apk ææºæ¾å å¯å
HwVmall.apk å为åå å¯å
HwVPlayer.apk ææ¾å¨ å¯å
InputDevices.apk è¾å ¥è®¾å¤ç®¡ç 建议ä¸å ï¼å¦åOTGåè½åå½±å
Keyguard.apk éå±ç¸å ³ ä¸å¯å
MediaProvider.apk åªä½åº ä¸å¯å
Meituxiuxiu.apk ç¾å¾ç§ç§ ççå...
Mms.apk çä¿¡ å¦æææ¿ä»£çå¯å
MusicFX.apk é³ä¹ å¯å
OneTimeInitializer.apk é¦æ¬¡å¼æºä½¿ç¨ 建议ä¸å
PapaqiSDK.apk ç±å¥èºåªåªå¥ å¯å ï¼å¾åºä¸ä¼è°ç¨
Phone.apk çµè¯ ä¸å¯å
ProxyHandler.apk 代ç ä¸å¯å
QuickSearchBox.apk èåæç´¢ å¯å
Settings.apk 设置 ä¸å¯å
SettingsProvider.apk 设置åå¨ ä¸å¯å
SharedStorageBackup.apk å ±äº«æ°æ®å¤ä»½æå¡ ä¸å¯å
Shell.apk androidæéç¸å ³ ä¸å¯å
SmartcardService.apk æºè½å¡ 建议ä¸å
Tag.apk NFCç¸å ³ ççå
VpnDialogs.apk ***设置 ä¸å¯å
WallpaperCropper.apk 设置å£çº¸æ¶åªåå¨éæ© ä¸å¯å
/system/delapp/
Mail.apk 移å¨é®ç®± å¯å
AirSharing.apk å为å³å¯å享 å¯å
AirSharingCast.apk å为å³å¯å享 å¯å
AirSharingCastClient.apk å为å³å¯å享 å¯å
ApplicationManager.apk ï¼
CMCCWifi.apk 移å¨å®å¶apk å¯å
cmnavi.apk 移å¨å®å¶apk å¯å
CMRead.apk 移å¨å®å¶apk å¯å
Emag_GameHall.apk 移å¨å®å¶apk å¯å
fetion.apk é£ä¿¡ å¯å
iFlyIME.apk 讯é£è¾å ¥æ³ å¯å
ISJ_WH.apk 移å¨å®å¶apk å¯å
lingxi.apk çµçè¯é³å©æ å¯å
mcontact.apk 移å¨å®å¶apk å¯å
MeituxiuxiuHelper.apk ç¾å¾ç§ç§ ççå
MM.apk MMååº å¯å
MMPlugCartoon.apk MMååº
MMPlugComic.apk MMååº
MMPlugKvSafeCenter.apk MMååº
MMPlugMusic.apk MMååº
MMPlugRead.apk MMååº
MMPlugVideo.apk MMååº
MobilePortal.apk 移å¨é¨æ· å¯å
moffice.apk moffice å¯å
MyTime.apk å为MyTime å¯å
OupengBrowser.apk 欧æOpera å¯å
QQlive.apk qqlive å¯å
qqmusic.apk qqé³ä¹ å¯å
SohuTV.apk æçTV å¯å
tmall.apk å¤©ç« å¯å
T_Client.apk å è´¹WLAN å¯å
/cust/preinstalled/public/app/
AMAP.apk é«å¾·å°å¾ å¯å
BaiduSearch.apk ç¾åº¦æç´¢ å¯å
DM.apk å¤ç±³é³ä¹ å¯å
HwMotionRecognition.apk æå¿æ§å¶ å¯å
iReader.apk æé å¯å
NetworkLocation_AMap.apk é«å¾·AGPSæå¡ å¯å
QQ.apk QQ å¯å
smartcom_itravel_w3.apk æ éåæ å¯å
SohuNewsClient.apk æçæ°é» å¯å
Taobao.apk ææºæ·å® å¯å
Weibo.apk å¾®åå¯å
å ¶ä»å¯å é¤çä¾å¦
/system/media/Pre-loaded/Picturesé»è®¤çå¾ç
/system/themes/ ä¸é¢æä¸ä¸ªä¸»é¢ï¼å¦æä¸æ¯ç¨å为æ¡é¢ï¼å¯ä»¥å é¤ä¸¤ä¸ªï¼çä¸é»è®¤çé£ä¸ªä¸»é¢ï¼è¿æä¸ä¸ªiconså ï¼æ¯ä¸ä¸ªå¾æ æ©å±å ï¼
æåºç¨ç主é¢ä¸ä¸å å«çiconså¦æå¨è¿éæç´¢å¼å°ï¼å°±ä¼å¯ç¨è¿ä¸ªiconï¼åºæ¬ä¸æ¯æå¾æ çåºè²å»¶å±åºæ¥ï¼æ¹ä¾¿åç§ä¸»é¢çåªè£ï¼å¦æä¸ç¨å为æ¡é¢å¯ä»¥å é¤
/cust/Samples ä¸é¢æMusicåWallpaperå¯å
作为 IT 从业人员,你觉得有什么工具大大提高了你的源码工作效率?
我也谈谈自己的一些提高开发体验经验,就说软件工具部分。这里的源码经验基本上都是冲着一个原则去的:“凡是需要重复做的,必须使用自动化工具完成。源码”
1. 版本控制
一般自己的源码众筹 php源码项目使用git,公司开发规定用svn。源码反正不管怎么样,源码版本控制少不了。源码有个说法,源码没有版本控制的源码项目,就等于没有。源码
版本控制的源码好处太多了,用过的源码人都知道。等于历史版本 + 代码备份了。源码这个提到的很多,就不多说了。
2.单元测试工具
写程序需要验证,如果快速知道新的MBTI测试源码代码和过去的写的代码不冲突,这个时候单元测试就能起到作用了。
当然单元测试的功能不仅仅是这个:
验证代码正确性和可靠性
验证新代码不和原有代码冲突
验证自己代码不合团队其他人员代码有冲突
验证合并是否有冲突
验证快速
可以作为API使用实例
跨平台和跨环境测试
这个是现代开发流程的基本模块之一,没有单元测试的项目,不是一个合格完整的项目。
有了单元测试,就再也不用担心在大项目中,自己做的小修改有会有什么大影响了。开发压力大大减少
PHP的我用的是PHPunit,JavaScript用过的就多了,Jasmine,Qunit,Mocha等工具(不管哪一个,至少要用到一个)C#一般用nUnit。还有各种mock,faker辅助。
3.功能测试工具
就是交互界面测试,也可以是界面样式测试。代码写的vb淘宝源码方式大致过程和单元测试差不多,不过单元测试每个单元都是独立的,理论上不应该有任何依赖关系(只要有依赖关系就叫做集成测试);而功能测试,就是最后成品的测试,必须把所有依赖打开,并且在界面上进行测试。
界面功能测试的优点:
速度比人工快
模拟真人操作
可以录像后导出测试代码
可以抓图
缺点:
依赖多,依赖的环境变化可导致代码失效
速度相对单元测试慢很多
测试成功率可能不是%
功能测试,也是自动测试的一种,至少解放了大量重复性劳动,大大提升界面功能开发的速度。
功能测试工具主要有phantomjs和Selenium。我两个都用,根据不同情况使用不同策略。
4. 依赖管理/程序包管理器
有了依赖管理,从此不用再手动去每个库的官方网站下载和更新库了。配置一下,运行一下命令行,然后就下载好了,erp源码排名定时在运行一下命令行,所有库又更新到最新版本了。开发体验大大提高。
列举一下主要好处:
自动安装依赖库
自动更新依赖库
自动安装/更新依赖库的依赖
最新库和现有项目有冲突,可以强制降级依赖库
开发依赖和项目依赖分开,发布版本时候可以自动删除所有开发依赖库
版本控制可以只收入依赖管理配置,无需收入依赖库的目录,大大节省版本控制大小
统一团体所有人员依赖库的版本
依赖管理下载速度快,免除开发人员手动的重复劳动。大大提高开发效率
PHP的依赖管理是composer,js的依赖管理是npm和bower,C#的是nuget,
5. 流程管理/构建工具
这个叫法很多还有叫做任务自动管理工具的,不管是什么名字,都是一个意思:自动化流程管理。
简单的说从源代码到产品之间,中间还有一个复杂的过程,一般大致如下:
代码清洁
编译
配置
测试
一般对开发人员来说,同步指标源码凡是重复的,必须使用工具自动完成。开发人员是不愿意重复做这些流程,所以需要流程管理,把这些步骤全部用代码编排好,然后执行一个命令行,让电脑反复执行去。没有流程管理的项目不是一个好项目
JavaScript有grunt和gulp,PHP有Phing,Java有ANT。我用grunt比较多。
6. Live Reload
Live Reload一般是和流程管理一起使用的,(也有独立使用的版本)。独立出来说也是为了体现程序员一个终极特质:懒。凡是重复的,必须使用工具完成。Live Reload就是这个体现:按F5是个重复的低效率行为,必须交给工具完成
Live Reload的功能说起来很简单:
检查文件是否变动
如果变动刷新页面
给开发人员带来的直接好处就是查看页面变动,只要按ctrl+s保持代码就行了,连f5都不用按了。就这好处,足以把Live Reload这个工具当作神器了。配合流程管理工具,只要保存代码(ctrl+s),就马上进行构建,构建完成自动刷新页面。
我用的Live Reload是grunt-contrib-watch。
7.代码质量分析工具
人工检查代码的效率是比较低下的,所以质量分析这一块可以作为开发辅助工具,来提高开发质量
常见的代码质量工具有:
语法检查,保证代码语法正确,可以跨平台,使用最佳实践
代码风格检查,保证团队代码风格一致
代码压缩,减少尺寸
重复代码检查
无用代码检查
模块复杂度分析
模块连接分析
等等,让然还有其他的质量分析,这些都是可以整合到流程管理上的。
JavaScript和PHP的用的比较多,Jshint,Jscs,uglifyjs,phpcpd,phpcs,phpdcd,PHPLOC等等工具,可以帮助开发人员提高代码质量,控制团队代码风格。
8.持续集成
有人和我说过,持续集成可以让你开发水平提高达到到另外一个层级。当我实践后,终于明白持续集成的魅力所在了。
要会持续集成,你首先必须学会以上6条(live reload除外),以上6条基本就是持续集成的几个基础模块,学会后,你自然而然就已经会了持续集成了。
持续集成的主要流程如下
检查版本控制库是否更新
如果更新,就下载最新版本的代码
构建
测试
报告
当你设置好一个持续集成的项目后,以上的步骤应该就是全自动的了。还是那句老话: 凡是重复的步骤,应该用工具来完成。而持续集成就是这个终极工具。
持续集成其实就是流程管理的一个升级版本,或者说一个扩充。它们都是自动流程工具。它们的差别是:
流程管理主要在本机(开发人员自己的开发环境)上执行,而持续集成则是在一个独立设置的环境下执行。
流程管理继续的是本机代码,而持续集成构建的是版本控制中保存的代码
团队中任何一个人push代码到版本控制中,持续集成就开始构建验证新代码的可靠性。
项目流程配置完成后,流程管理需要执行命令行,持续集成应该全自动
流程管理是持续集成的一个模块,属于持续集成的构建模块
持续集成会有更多后续的专业功能,比如说产生报告,错误通知,构建历史,测试历史等开发新型
我们可以设想一下这样的一个情况,在有-个人的团队在开发一个PHP项目,每个人每天至少往版本控制中push大约次新代码,而这个项目你又要保证在3个主流的浏览器中功能一致,样式相同,而这个项目又必须跨平台,可以在mac,window,linux上都可以运行,而且还要保证PHP5.4~5.6都可以运行。这个时候,持续集成系统的优势就会显示其真正的威力了。
总之,在一个专业项目中,持续集成服务所提供的自动构建和专业报告,可以把项目开发的专业水准再次提高到一个新的层次当中。
我用过的持续集成是Jenkins。
文章到此算完结了。其实开发中,还有很多优秀的工具,但无法和这些主要的开发工具相比,就不在这里说了。