通用技术是开发者在开发过程中默认已经掌握的知识和工具。
IDE
集成开发环境(IDE)是开发者最常用的开发工具。常见的IDE包括:
- Visual Studio Code:轻量级,多数语言可用,适合 Python、JS、TS 等语言。访问官网。
- Visual Studio:C 系列语言常用,适合 C#、C++ 等语言。访问官网。
- IntelliJ IDEA:Java 系列语言常用,适合 Java、Kotlin 等语言。访问官网。
区别于普通的文本编辑器,IDE 提供的重要功能包括:
- 基于文件夹的项目仓库管理
- 代码补全与语法高亮
- 代码调试与其他分析工具
- 插件生态与 AI 编程支持
Checklist
下面给出一个 IDE 掌握情况的 Checklist,供大家参考:
新手级:
- 我安装了一个 IDE,并且知道如何从 IDE 中打开一个文件夹。
- 我知道如何使用 IDE 的代码补全功能。
- 我能让至少一种语言的代码在 IDE 中运行。
基础级:
- 我安装了一个好用的 IDE 插件。
- 我能对至少一种语言的代码在 IDE 中进行断点调试。
- 我知道如何使用 IDE 提供的 AI 辅助编程功能。
命令行
区别于图形化用户界面(GUI),命令行(CLI)是开发者与计算机交互的另一种重要方式。通过命令行,你可以直接以文本形式输入命令来执行各种操作,如文件管理、程序运行等。
与图形界面的显著区别就是,命令行没有窗口和鼠标的概念,所有的操作都通过键盘来完成。但也正是这种原始的交互方式,使得命令行在某些场景下更加高效和灵活。
各个操作系统都有自己的命令行工具:
- Windows:命令提示符(cmd)和 PowerShell。
- macOS 和 Linux:终端(Terminal),通常使用 Bash 或 Zsh 作为默认的 shell。
欲了解更多关于命令行的内容,请自行探索。
Checklist
下面给出一个命令行掌握情况的 Checklist,供大家参考:
新手级:
- 我知道如何在我的系统里打开命令行。
- 我知道如何使用命令行切换当前目录(cd),以及列出当前目录的所有文件。
- 我知道如何使用命令行来运行一个程序,并且理解 path 环境变量的概念。
基础级:
- 我知道如何使用软件包管理器(如 apt、winget 等)来安装一个软件包。
- 我知道如何使用命令行对文件进行创建、写入、读取、复制、移动、删除的操作。
- 我知道在 Linux 系统中的用户权限和文件权限的概念,并且知道如何更改文件权限。
进阶级:
- 我知道 SSH 的概念,并且知道如何用它来连接到另一台计算机。
- 我知道命令行的设备、重定向、管道的概念,并尝试将多个命令进行组合使用。
- 我知道如何编写一个简单的 shell 脚本来自动化一些重复性的任务。
版本控制
想象一下你在和别人一起开发一个项目,你怎么和别人对接你的代码进度?难道每次都把代码打包再发给别人?这显然不现实。
即使你没有在和别人合作开发,而是自己单独开发一个项目。随着时间的推移,你的代码也会不断地变更。你可能会想回退到之前的某个版本,看看当时的实现是怎样的。这又该怎么办?
版本控制系统(VCS)就是为了解决这个问题而诞生的!
最常用的版本控制系统是 Git。Git 是一个分布式版本控制系统,允许你在本地管理代码的版本,并且可以将代码推送到远程仓库(如 GitHub 等)与他人协作。
访问官网以下载 Git。欲了解更多关于 Git 的内容,请自行探索。
Checklist
下面给出一个 Git 掌握情况的 Checklist,供大家参考:
新手级:
- 我安装了 Git、在 Git 中配置了用户名和邮箱,并且已经注册了一个 GitHub 账号。
- 我知道如何克隆(clone)一个远程仓库到本地,或者如何在一个已有的项目中初始化(init)一个仓库。
- 我知道如何将当前更改的文件添加(add)到暂存区,然后提交(commit)我的更改并写好提交信息。
- 我知道如何将我的提交向远程仓库推送(push),以及如何从远程仓库拉取(pull)别人的最新更改。
基础级:
- 我知道如何签出(checkout)某个提交,以及如何创建和切换当前分支(branch)。
- 我知道如何重置(reset)当前的代码到某个提交处,以及三种重置方法(soft/mixed/hard)的区别。
- 我知道如何合并(merge)分支,并且知道代码冲突是如何发生的,以及如何解决它们。
- 我知道约定式提交(Conventional Commit)的规则,并且坚定地践行它。
进阶级:
- 我知道如何修正(amend)最近一次提交。
- 我知道何时需要强制推送,以及强制推送的注意事项。
- 我知道何时需要变基(rebase),以及如何进行变基。
- 我知道如何利用 reflog 命令找回某个丢失的提交。
本篇文档由 Harry Huang 编写。 封面图片来自 Kevin