谈谈Java程序员进阶的那些知识和方向
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了谈谈Java程序员进阶的那些知识和方向,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2945字,纯文字阅读大概需要5分钟。
内容图文
谈谈Java程序员进阶的那些知识和方向
记得前段时间看过一篇文章谈到一种程序员叫野生程序员,战斗力极强,可以搞定一切问题,但是通常看问题抓不到本质,或者说是google/baidu/stackoverflow/github的搬运工,其实个人觉得也没什么不好的,闻道有先后,术业有专攻,确实有工作岗位就需要这样的职位。但是计算机行业的发展有其方向,工程师的职业发展也有其方向,随着经验的积累,可能这样的人回头再看看自己写的代码也会觉得不太好。那么如果有一天这样的人想换工作,或者应聘体质比较完整的公司,可能还是需要潜心修炼的,下面笔者从两个方面谈谈Java程序员进阶的那些知识和方向,笔者不打算从基础的东西讲起,比如Java语言基础,多线程,IO,如果有责方面的需求请参考领域内的那些神著,但是切记,最好看原版,远离粗制滥造的翻译版。
1. Paradigm
除了Java语言基础,通常在每种语言中还有很多paradigm,这些paradigm往往是衡量老鸟和新手的地方,比如函数命名,异常处理,泛型等等,下面用异常处理的两种类型来说明,笔者见过很多的Java程序员写过很多年的代码仍然分不清楚其中的区别。
Checked 和 unchecked exceptions
Unchecked exceptions
一般用于表示程序中的Bug, 比如函数调用中的非法参数异常,Java 创始人对Unchecked exceptions的解释是Unchecked exceptions是通常不可以恢复的运行时异常,换句话说,Unchecked exceptions
其实就是RuntimeException,常用的Unchecked exceptions有IllegalArgumentException, NullPointerException, 和 IllegalStateException,Unchecked exceptions通常不需要添加到函数签名列表,
并且在调用方不需要强制使用try..catch。
Checked exceptions
通常用于表示函数执行过程中的一些pre condition 没有得到满足,这些条件通常超出了函数的控制范围,比如无效输入,数据库连接问题,网络异常,文件丢失等问题,Checked exceptions的父类是Exception,
Checked exceptions需要添加到函数签名列表,并且在调用方需要强制使用try..catch来捕获Checked exceptions。
2. 效率和速度
记得有一次一个朋友的老板和客户谈了一个项目,客户想先看看效果然后做决定某些功能是不是他想要的,于是老板问下面的一个工程师需要多久做出一个demo,这个人想了一天,说最快也要一个月,老板觉得太慢,于是问另外一个工程师,他给出的结论是demo只需要3天,结果3天的确实做完了,而且没有加班。那么为什么差这么多呢,脚本语言,脚本语言可以大幅的提升工作效率,特别是原型设计阶段,下面以Groovy操作XML为例加以说明。假设有很多这样的XML数据需要处理,试想一下如果使用Java会是一番什么样的景象呢。
< books > < book name ="Effective C++" > < author >Scott Meyers</author></book><book name="More Effective C++"><author>Scott Meyers</author></book><book name="C++ Primer"><author>Stanley B. Lippman</author></book><book name="Core Java"><author>Cay S. Horstmann</author></book><book name="Effective Java"><author>Joshua Bloch</author></book></books>
下面演示一下如何通过Groovy Script驾驭上面那段XML, 输出配对的书名和作者,并且过滤出所有Scott Meyers的著作,可以看出,除了打印输出,几乎所有的需求只要一行代码就可以解决。
println"--solidmango design start--" languages = new XmlParser().parse(‘TestXML.xml‘) println "Books and authors" languages.each { println "<<${it.@name}>> authored by ${it.author[0].text()}" } def languagesByAuthor = { authorName -> languages.findAll { it.author[0].text() == authorName }.collect { it.@name }.join(‘, ‘) } println"-------------------------" println "Languages by Scott Meyers:" + languagesByAuthor(‘Scott Meyers‘) println"--solidmango design end--"
输出:
--solidmango design start-- Books and authors <<Effective C++>> authored by Scott Meyers <<More Effective C++>> authored by Scott Meyers <<C++ Primer>> authored by Stanley B. Lippman <<Core Java>> authored by Cay S. Horstmann <<Effective Java>> authored by Joshua Bloch ------------------------- Languages by Scott Meyers:Effective C++, More Effective C++ --solidmango design end--
小节
人总是要成长的,大公司在招聘的时候通常会考量一下面试者是否懂球,希望大家共同进步。
原文:http://www.cnblogs.com/pugang/p/5004631.html
内容总结
以上是互联网集市为您收集整理的谈谈Java程序员进阶的那些知识和方向全部内容,希望文章能够帮你解决谈谈Java程序员进阶的那些知识和方向所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。