-
Notifications
You must be signed in to change notification settings - Fork 3.8k
2020 05 05 汉字不能编程?别闹了,只是看着有点豪横!容易被开除!
作者:小傅哥
博客:https://bugstack.cn
沉淀、分享、成长,让自己和他人都能有所收获!
在编程的路上你是否想过,用汉字写一写代码?
最近有初学编程的小伙伴问小傅哥
,汉字可以写代码吗。自己英文不好,要是汉字可以写代码就好了。难道你要的是易语言?其实并不是,小伙伴也是学习 Java
的初学者,刚刚学习到 Spring
看着一片没有注释的代码实在不好理解,要是都是汉字写的,那不和读作文一样了吗!
说到注释,我想到大部分程序员讨厌的两件事;
- 不喜欢写注释
- 不喜欢别人不写注释
其实对于学习编程来说,初学时写写案例,完成简单的功能,反复练习夯实基础。数学和英文都还并不是你的绊脚石,因为你不需要做复杂的逻辑处理,比如算法。也不需要查阅大量的资料,比如原版的英文资料以及国内没有翻译的技术书籍等。所以这个时候对你来说,只是需要不断的学,不断的写。并逐步强加自己的数学和英文能力。
回到我们的说的,既然你问汉字可以写代码吗。其实在 java
里,原则上你可以写汉字的类
、属性
、方法
,JVM虚拟机
也是可以通过编译执行的。只是这样的代码并不能很好的维护,甚至说乱码了也很麻烦。再者,有人写方言怎么办!
好!那么我们接下来就使用汉字的方式来编写一段关于 SpringAop
的案例!
- JDK 1.8.0
- Spring 4.3.24.RELEASE
- 本篇涉及的源码下载,可以关注公众号:
bugstack虫洞栈
获取,并且还可以获取更多原创案例。
为了这个案例更加真实,我们模拟电影清朝韦小宝时期
,太监入宫的过程。说白了也就是 Spring
的 AOP
面向切面,切
的编程。
在做案例之前,我们先了解一下 AOP
的基本概念;
-
@Aspect
,定义切面的注解 -
@Pointcut
,切入点,一般会在方法上设定通配符表达式 -
@Around
,环绕,也就是你原本的方法会在这里处理 -
@Before
,前置处理 -
@After
,后置处理
紫禁城.内务府.敬事房.膑.太监膑.净身监管.java
@Aspect
@Component
public class 净身监管 {
@Pointcut("execution(public * 紫禁城.内务府.敬事房.利器库..*.军刺切(..))")
public void 监管员(){
}
@Before("监管员()")
public void 敬事前(){
System.out.println("敬事前:---------准备下刀... ...");
}
@After("监管员()")
public void 敬事后(){
System.out.println("敬事后:---------切面完成... ...");
}
@Around("监管员()")
public Object aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("待切身份:"+pjp.getArgs()[0]);
System.out.println("执行工具:"+pjp.getSignature().getName());
//获得传递对象,并做处理
太监膑 太监 = (太监膑) pjp.getArgs()[0];
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd");
太监.set敬事日期(timeFormat.format(new Date()));
//此处可以传递更改后的参数
Object obj = pjp.proceed(new Object[]{太监});
return obj;
}
}
-
@Aspect
,定义切面类,用于处理程序中的切面编程操作。 -
@Pointcut("execution(public * 紫禁城.内务府.敬事房.利器库..*.军刺切(..))")
,定义切点处,对那些方法进行执行切面操作。除了这样的操作外,还可以定义成自定义注解。那么后续只要把某个你需要的方法上面添加这样的自定义注解,就可以被AOP
拦截。 -
@Before("监管员()")
、@After("监管员()")
,记录切面执行前后的记录。 -
@Around("监管员()")
,用于环绕方法增强,可以这里去处理方法中的一些属性信息,比如添加给某个字段添加时间。太监.set敬事日期(timeFormat.format(new Date()));
紫禁城.内务府.敬事房.利器库.切除器具.java
@Component("切除")
public class 切除器具 {
public 太监膑 军刺切(太监膑 太监){
太监.set性别(宦官.太监.name());
System.out.println("... 啊 ... ...老子被切面了!"+太监.get姓名());
return 太监;
}
}
- 这里类的方法就是上面定义的切点,
Pointcut
,也就是会被切面处理的方法。
紫禁城.内务府.敬事房.执刀人.张三丰执刀.java
public class 张三丰执刀 {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("皇太极.xml");
太监刑 太监行刑 = ctx.getBean("太监刑",太监刑.class);
太监膑 太监 = new 太监膑();
太监.set姓名("小德张");
太监.set年龄("9");
太监.set性别(宦官.男.name());
太监 = 太监行刑.执行切除(太监);
System.out.println("\r\n切除状态:"+太监);
}
}
- 首先这里定义了获取
Spring
注解的Application
,用于我们获取Bean
。 - 接下来定义一个对象类,主要传递具体参数信息交给执行切面的方法,进行操作。
- 最后输出结果信息,也就是我们可以看到具体被切面操作的方法。
启动方法;紫禁城.内务府.敬事房.执刀人.张三丰执刀.java
待切身份:太监膑 [姓名=小德张, 年龄=9, 性别=男, 敬事日期=]
执行工具:军刺切
敬事前:---------准备下刀... ...
... 啊 ... ...老子被切面了!小德张
敬事后:---------切面完成... ...
切除状态:太监膑 [姓名=小德张, 年龄=9, 性别=太监, 敬事日期=2020-05-05]
Process finished with exit code 0
-
汉字编程,好奇可以试试,但别真的用到项目里。本文也只是通过这样的例子,向你展示学习过程的乐趣,建立一些学习过程的好感。
-
最近加了很多刚入门学习编程的小伙伴,有很多小问号。比如;
我是非常建议先跑起来,多写代码后再慢慢的去探究原理
-
最近听到一首诗,不错;
廿四桥边廿四风,凭栏犹忆旧江东。夕阳返照桃花渡,柳絮飞来片片红。
,白色的柳絮在夕阳桃花的映衬下就是成了片片红
。只要你敢学识渊博,就敢让你拥有翻江倒海之力。
小傅哥(微信:fustack),公众号:bugstack虫洞栈
| bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获!
🌏 知识星球:码农会锁
实战项目:「DDD+RPC分布式抽奖系统
」、专属小册、问题解答、简历指导、架构图稿、视频课程
🐲 头条
-
💥
🎁 Lottery 抽奖系统
- 基于领域驱动设计的四层架构的互联网分布式开发实践 -
小傅哥的《重学 Java 设计模式》
- 全书彩印、重绘类图、添加内容 -
⭐小傅哥的《Java 面经手册》
- 全书5章29节,417页11.5万字,完稿&发版 -
小傅哥的《手撸 Spring》
- 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理 -
🌈小傅哥的《SpringBoot 中间件设计和开发》
- 小册16个中间件开发30个代码库
⛳ 目录
💋 精选
🐾 友链
建立本开源项目的初衷是基于个人学习与工作中对 Java 相关技术栈的总结记录,在这里也希望能帮助一些在学习 Java 过程中遇到问题的小伙伴,如果您需要转载本仓库的一些文章到自己的博客,请按照以下格式注明出处,谢谢合作。
作者:小傅哥
链接:https://bugstack.cn
来源:bugstack虫洞栈
2021年10月24日,小傅哥
的文章全部开源到代码库 CodeGuide
中,与同好同行,一起进步,共同维护。
这里我提供 3 种方式:
-
提出
Issue
:在 Issue 中指出你觉得需要改进/完善的地方(能够独立解决的话,可以在提出 Issue 后再提交PR
)。 -
处理
Issue
: 帮忙处理一些待处理的Issue
。 -
提交
PR
: 对于错别字/笔误这类问题可以直接提交PR
,无需提交Issue
确认。
详细参考:CodeGuide 贡献指南 - 非常感谢你的支持,这里会留下你的足迹
- 加群交流 本群的宗旨是给大家提供一个良好的技术学习交流平台,所以杜绝一切广告!由于微信群人满 100 之后无法加入,请扫描下方二维码先添加作者 “小傅哥” 微信(fustack),备注:加群。
- 公众号(bugstack虫洞栈) - 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。
感谢以下人员对本仓库做出的贡献或者对小傅哥的赞赏,当然不仅仅只有这些贡献者,这里就不一一列举了。如果你希望被添加到这个名单中,并且提交过 Issue 或者 PR,请与我联系。