不熟悉的编程语言,项目如何开展?

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 引言公司中的开发一般是沿着一种核心开发语言如Java、C/C++、PHP进行相关开发。但由于产品新需求、项目新需要,免不了会使用自己不擅长的语言开发。甚至,现在全栈工程师也比比皆是。对于经验不丰富的职场人,如何开展工作呢? 结合我近期的项目经历,我说下我的经验和教训。

1、项目经历

我本人从高校到毕业三年多的时间一直使用C++/C开发,参与过3个版本产品、1个大型项目的开发。而最近由于新团队人员都使用Java,早期项目也都是Java开发的。短期内如何实践、进入项目是值得深思的问题。


2、由框架入口,先熟悉结构。

对于新的语言,难免会有抵触情绪。不熟悉编译环境、不熟悉基本语法结构。但是有一点现实因素是:“你改变不了环境,那就改变自己”。况且,学习一门新语言对程序员也是一件非常快乐的事情。


2.1 了解项目的模块组成

从大的角度出发,知道有哪些模块组成。如果有人讲解,可以了解的更快。如果没有,就自己摸索。先了解相关相关配置,如:数据库连接、依赖库等。搭建Eclipse环境,尝试让程序跑通。

这个阶段发现的问题要先解决掉。如java依赖jar包位置更新,如jdk版本问题jdk1.8, jdk1.7, jdk1.6。


2.2 熟悉模块之间的关系

了解哪个是客服端、哪个是服务端,二者之间的调用、被调用者的关系如何?

1)模块静态结构

模块A:负责从数据库配置表中根据条件,从关联表中读取相关信息。构造成模块B能够读取的a.xml。

模块B:负责读取a.xml,进行xml解析,根据各个不同的字段进行任务处理;并将处理结果存储到b.xml。

模块C:负责读取b.xml,进行xml解析,将结果存储到数据库结果表中。

image.png

2.3 尝试理解模块间的动态结构image.png

这里会涉及到任务的调度,如分布式的Zookeeper,模块A的责任是Master,模块B是Client,模块C是Result。

保活连接是通过Socket建立的。


3、通读代码,熟悉大致原理。

前提,已经通过步骤2,知道模块间的调度关系。即便对Java语法、类结构、多线程等不了解,但相信有C、C++的底子,看起来并不复杂。

从大的角度了解有几个类组成。如:数据库连接类、配置读取类、xml解析类、任务传递类、任务采集类、结果存储类等。

就像“剥洋葱一样”,从外层剥起,一层一层深入,这个过程刚开始会流泪,但,熟悉了也就很快搞定了。炒出来还是很好吃的。最外层,从Main函数入口,知道其对应的外层入口的含义,如:Init()接口、Start()接口、Stop接口()。

中间层, 读取数据库表信息,形成可供下发的任务;任务处理,涉及:xpath内容解析、js解析、分词、content读取、组合结果段。

中间层往往是最复杂的层,涉及的逻辑很复杂,这也是剥洋葱最刺眼、流泪的阶段。

中间层往往是逻辑最复杂,涉及的业务代码最多,新需求的改动往往也发生在这里。

中间层随着业务逻辑的不同,会涉及很多类,不同类实现不同的业务逻辑。

最内层:任务写入到xml中,以便模块间交互;结果存入mysql。


4、由新需求入手,看如何改动。

有了前面的框架基础以及静态、动态大致概念后,再去回过头来看新项目需求是什么?问下以下几个问题:

1)新需求点是什么?能否细分?

2)新需求需要动哪几个模块?动一个模块会不会涉及到关联模块?

尝试改动几个你认为对的入口的地方,打印看输出结果是不是符合预期。


5、着手改动,再学习相关语法。

终究是要动手的,不同点的是老手1-4步骤,可能需要半个小时或者不花时间。而我们非强项语言的尚处于java学习阶段的,可能花1-2天摸清架构、模块间静态、动态关系。

这个时候,可以参考已有代码结构、语法格式、类结构、函数调用、函数重载等。

要实现新的功能需求的时候,需要用到如动态数组arrayList概念可以Google去查,如何存储、如何赋值、如何循环打印等。

因为不熟悉,这个阶段可能会出很多Bug。当不能一眼定位到代码行的时候,需要多加System.println(“”)去打印,定位错误。


6、基础还是必须要学习。

参考网上教程和视频教程,国内和国外的。我是Java初学者,目前仍然处于摸索阶段,不能有很好的推荐。等储备粮丰富了,再做甄别后的推荐。


反观之,很多涉世未深的程序员,包括3年前刚毕业的我,会从步骤6–步骤2去执行,势必花费了更多时间,也不能看到程序的全貌。并且容易陷入bug的泥潭不能自拔。3年前的 PHP项目的“苦逼”经历与思考 :

http://blog.csdn.net/laoyang360/article/details/32175701


7、小结

思路是顺出来的,勤思考,不畏难、迎难而上方显英雄风范!

相关文章
|
Rust Dart JavaScript
每个开发人员都想使用的编程语言
每个开发人员都想使用的编程语言
|
6月前
|
Java
Java开发规范(简洁明了)
Java开发规范(简洁明了)
让我设计一门编程语言或开发一套解决框架
让我设计一门编程语言或开发一套解决框架
91 2
|
搜索推荐 开发者
浅谈初学者应该如何正确打开一个技术或一门语言
因为只是想分享下自己的学习方法,想着这个题目有点大,因此在前面加了“浅谈”两个字,技术变化日新月异,更新迭代快如加满燃料的火箭。作为一个技术开发者,明显感觉到技术每天正以肉眼可见速度迭代发展,在飞速发展面前,很多人都表示很无力。几乎每个人都在卷,一边在喊快卷不动了,一边挑灯夜战。学习好像是我们每个人与生俱来的一个能力,从牙牙学语到读书求学,我们一直在围绕着学习这个话题展开,直到现在工作我们依然不忘学习,生怕落后于人,就算不能赶上风口,顺风起飞。也希望能逆风飞翔一把。我们学习,也正是因为学习能解决我们生活甚至生存所遇到的难题,因此爱学习的人总喜欢说:活到老,学到老。这也是我们积累经验的途径之一。
141 1
|
存储 开发框架 Cloud Native
【C#基础】初识编程语言C#
编程语言C#和.NET平台的介绍以及如何写出自己第一个C#程序。
115 0
|
人工智能 前端开发 搜索推荐
程序初学者推荐学习的三种热门编程语言
在当前的社会需求中,市场上运用最多的、最为广泛的、最热门的、最常用的编程语言可以大致分为一下三种:C语言、JAVA语言、Python语言。
|
设计模式 自然语言处理 JavaScript
7 行代码 3 分钟:从零开始实现一门编程语言
本文介绍了多种解释器实现。通过修改最后一个解释器,你应该可以快速测试关于编程语言的新想法。如果你希望有一种语法不一样的语言,就可以构建一个解析器,把 s-表达式转储。这样,你就可以干净利落地将语法设计与语义设计分开。
562 0
7 行代码 3 分钟:从零开始实现一门编程语言
|
Java
熟悉Java编程环境
熟悉Java编程环境
113 0
熟悉Java编程环境
|
JavaScript
常用但是不熟悉
常用但是不熟悉
|
设计模式 算法 程序员
【译】需要学习的是编程,而不是编程语言
我们不仅是程序员,而且是个(与时俱进的)学习者。鲜见的是有多少人认为他们是在学习编程的呢。
下一篇
无影云桌面