avatar
被三哥写的java绕晕了# Programming - 葵花宝典
i*k
1
就说蔡徐坤不会做人,有的人是真的靠着本事,有的人是真的靠着脸上开的刀。我说蔡
徐坤没本事就是靠着刀,要不是长得好看你看看,十个里面有九个人不会粉他吧。而且
这群粉他的还有一部分是因为除了脸好看还自己贴了钱的,指不定里面什么猫腻,我跟
你们说能粉这种类型的大多都是想做包衣奴才的,没得跑啊。
之前只是觉得这个人没能耐,现在觉得这个人是真的没本事啊,连带自己的封面CD的头
图都不自己设计的,都是抄袭,多丢人,还让别人也给摔在ins上挂啊,这个恶心劲儿
的,以后还想出头吗?出口是没戏了,想想也就在国内三不三的流行吧。要不太难生存
了吧。想想这种孩子就是从小被人说的那种学人精。
不是说这个圈子有什么,是这个圈子的傻逼偶像太多了。不怪人喷你,只能说你自己的
思考角度有问题。也就是迷惑一些年轻的小姑娘,算了,谁还没年轻被明星那张脸骗过
啊。
avatar
r*t
4
两个16G的,20号订的
网上状态更新了,虽然没有说已经寄出也没有tracking number,但是
可以看到TP的序列号乐
avatar
d*e
5
前端一个API经过好几个microservice传来传去最后才到数据库,很简单的逻辑被拆成
了好多步骤,总共200行的class有7,8个dependency injection,一个method能完成的
事,左一个builder又一个mapper的,绕来绕去都不知道最开始要干嘛了,而且大概90%
的interface只有一个实现,都只有1-2个method。。以前看王垠博客吐槽java码农滥用
patterns把简单的问题复杂化,这个算不算,还是我太菜了,工业代码就是该这样写。
。FLG里Java都是怎么写的呢?网上有没有大公司开源的后端java service项目可以学
习一下?
avatar
d*i
6
这就是纯傻子了,不解释
avatar
b*3
8
无语啊。
今天新蛋也是这个价格
莫非都商量好了》
avatar
r*r
9
什么叫TP序列号?
哪里有显示?

【在 r****t 的大作中提到】
: 两个16G的,20号订的
: 网上状态更新了,虽然没有说已经寄出也没有tracking number,但是
: 可以看到TP的序列号乐

avatar
w*m
10
就是这么写的
dependency injection是为了避免npe
builder还有factory是为了避免constructor (什么是mapper?)
到处是interface是为了mixin pattern
java这叫写的飘逸。你不学着写就是low
跟着三哥走,升职不用愁
avatar
x*i
11
同意,一些人是靠着脸蛋开刀,一些人是靠着自己真的会唱
avatar
b*n
12
赞,整了一个,atv2用了一年卖了还赚了60刀
chase ultimate mall 现在newegg还有5% cb

【在 b***3 的大作中提到】
: 无语啊。
: 今天新蛋也是这个价格
: 莫非都商量好了》

avatar
r*t
13
每个机器都有自己的SN,在order status里面

【在 r********r 的大作中提到】
: 什么叫TP序列号?
: 哪里有显示?

avatar
m*r
14
我当不了码工,就是因为受不了这个; 我崇尚简单,绕来绕去鬼画符的东西很难接受。
旧学虽然不能全盘否定, 但也太复杂了; 古文一写写上千字,很多都是车轱辘话绕着
说。
avatar
j*n
15
垃圾这种二三线的明星
还是取缔了比较好
avatar
s*y
16
在什么地方卖的啊?
谢谢

【在 b******n 的大作中提到】
: 赞,整了一个,atv2用了一年卖了还赚了60刀
: chase ultimate mall 现在newegg还有5% cb

avatar
c*k
17
你的order number前四位是啥啊

【在 r****t 的大作中提到】
: 每个机器都有自己的SN,在order status里面
avatar
f*t
18
可以学习各种大数据开源项目,比如cassandra, hdfs
avatar
J*S
19
你用的是哪个链接?

【在 r****t 的大作中提到】
: 每个机器都有自己的SN,在order status里面
avatar
r*r
21
我也很好奇,好像没有SN的

【在 J**S 的大作中提到】
: 你用的是哪个链接?
avatar
d*e
22
对对,有factory,那个mapper就是把object里的field重新排列组合一下,加加减减一
些field


: 就是这么写的

: dependency injection是为了避免npe

: builder还有factory是为了避免constructor (什么是mapper?)

: 到处是interface是为了mixin pattern

: java这叫写的飘逸。你不学着写就是low

: 跟着三哥走,升职不用愁



【在 w********m 的大作中提到】
: 就是这么写的
: dependency injection是为了避免npe
: builder还有factory是为了避免constructor (什么是mapper?)
: 到处是interface是为了mixin pattern
: java这叫写的飘逸。你不学着写就是low
: 跟着三哥走,升职不用愁

avatar
r*t
23
4379XXX
我另外一个晚一天的还没有变

【在 c*********k 的大作中提到】
: 你的order number前四位是啥啊
avatar
r*t
25
google hp small business order status
最常用的链接

【在 J**S 的大作中提到】
: 你用的是哪个链接?
avatar
d*e
26
我觉得java里injection减少耦合是个伪命题,因为接口是固定的,如果被inject的类
功能变化要改接口,原来的injection就break了,本质上和call其它function没任何区别


: 就是这么写的

: dependency injection是为了避免npe

: builder还有factory是为了避免constructor (什么是mapper?)

: 到处是interface是为了mixin pattern

: java这叫写的飘逸。你不学着写就是low

: 跟着三哥走,升职不用愁



【在 w********m 的大作中提到】
: 就是这么写的
: dependency injection是为了避免npe
: builder还有factory是为了避免constructor (什么是mapper?)
: 到处是interface是为了mixin pattern
: java这叫写的飘逸。你不学着写就是low
: 跟着三哥走,升职不用愁

avatar
r*t
27
在line item detail里面点item number,会出现一个新
窗口
以前只显示order number,今天变成了一个新的表格,有invoice
number 和 SN

【在 r********r 的大作中提到】
: 我也很好奇,好像没有SN的
avatar
c*v
28
那你找本effective java看下。那本書Make sense。
網絡的,數據庫的,jdk的...
不同領域的寫法不同。甚至不同業務邏輯,寫法也不一樣。
看源碼的用處存疑。

【在 d**********e 的大作中提到】
: 我java也是跟着普林斯顿算法课学的,我看jdk源码里根本没这些鬼东西,直接了当的
: 很,逻辑要复用的时候加一个private method就行了
:
:
: https://introcs.cs.princeton.edu/java/home/
:
: I learned Java from the above class.
:

avatar
J*S
29
知道了,
在Print preview里面可以看到。
avatar
d*e
30
感谢!
..........


: 那你找本effective java看下。那本書Make sense。

: 網絡的,數據庫的,jdk的...

: 不同領域的寫法不同。甚至不同業務邏輯,寫法也不一樣。

: 看源碼的用處存疑。



【在 c*******v 的大作中提到】
: 那你找本effective java看下。那本書Make sense。
: 網絡的,數據庫的,jdk的...
: 不同領域的寫法不同。甚至不同業務邏輯,寫法也不一樣。
: 看源碼的用處存疑。

avatar
w*m
31
java有很多禁忌
比如你不能用new或者constructor
用是可以,但很low
比如你不能用继承
只能用injection
比如你不能用abstract class
只能用interface
你觉得很绕的写法其实都是正确的
就像楼上提到的effective java那本书
作者是java的主要作者
你看完了以后,就明白什么是正确的写法

区别

【在 d**********e 的大作中提到】
: 我觉得java里injection减少耦合是个伪命题,因为接口是固定的,如果被inject的类
: 功能变化要改接口,原来的injection就break了,本质上和call其它function没任何区别
:
:
: 就是这么写的
:
: dependency injection是为了避免npe
:
: builder还有factory是为了避免constructor (什么是mapper?)
:
: 到处是interface是为了mixin pattern
:
: java这叫写的飘逸。你不学着写就是low
:
: 跟着三哥走,升职不用愁
:

avatar
s*e
32
一点浅见:
不造轮子,直接处理业务逻辑,一般遵守普通jdk外加使用的框架的规范即可。
造轮子,或者写的东西比较复杂,很多组一起开发。还是需要一些额外的规范或习惯。
我个人的原则是越少越好,写的代码要符合“人性”,不要把手段当作目的。最怕项目
里有人别出心裁,引入新规范和开发习惯,最后把项目搞得乌七八糟。
另外,看别人的代码要有包容心,很多有点年头的大项目,里边总会有各种问题,这些
未必是你的前任造成的,甚至不是任何人造成的,只能说世界变化太快,程序员很多时
候跟不上节奏。

【在 w********m 的大作中提到】
: java有很多禁忌
: 比如你不能用new或者constructor
: 用是可以,但很low
: 比如你不能用继承
: 只能用injection
: 比如你不能用abstract class
: 只能用interface
: 你觉得很绕的写法其实都是正确的
: 就像楼上提到的effective java那本书
: 作者是java的主要作者

avatar
n*f
33
多看看高人的code学习
avatar
R*6
34
现在的程序员不少把Design Patterns 当圣经, 有些直接了当的事情非套用 one
pattern,搞得复杂的很。 可是想一想, 那些 Patterns 都是从程序中总结出来的,
现在的大型软件(Windows, Oracle database, SQL server, Linux, Office, etc)都
是在广泛使用Patterns 之前就已经形成产品了。什么都套用pattern 搞的程序给八股
文似的。
我知道我的想法很另类。
avatar
h*e
35
不另类,有了lambda之后很多OO design patterns变垃圾了。

【在 R**********6 的大作中提到】
: 现在的程序员不少把Design Patterns 当圣经, 有些直接了当的事情非套用 one
: pattern,搞得复杂的很。 可是想一想, 那些 Patterns 都是从程序中总结出来的,
: 现在的大型软件(Windows, Oracle database, SQL server, Linux, Office, etc)都
: 是在广泛使用Patterns 之前就已经形成产品了。什么都套用pattern 搞的程序给八股
: 文似的。
: 我知道我的想法很另类。

avatar
R*6
36
我一直认为design patterns就是垃圾。30 个design pattern,名字我都记不住, 有
些又很类似。语言中常用的 概念, inheritance, abstract class/interface,
template,很容易就用了,非得套用pattern,显得别扭。
avatar
d*e
37
没错,amazon上搜软件工程书出来的都是Martin fowler,uncle bob这些跳大神的忽悠
骗子,他那个thoughtworks公司开发了什么著名软件吗?凭什么就能指导其他人了,还
有那个uncle bob也不知道从哪冒出来的,bio上连个学位都没有,就写了本clean code
兜售玄学,不知道这些人在软件行业的presence是怎么建立起来的,放在其它行业是不
可思议的。


: 现在的程序员不少把Design Patterns 当圣经, 有些直接了当的事情非套用
one

: pattern,搞得复杂的很。 可是想一想, 那些 Patterns 都是从程序中总结出
来的,

: 现在的大型软件(Windows, Oracle database, SQL server, Linux, Office,
etc)都

: 是在广泛使用Patterns 之前就已经形成产品了。什么都套用pattern 搞的程序
给八股

: 文似的。

: 我知道我的想法很另类。



【在 R**********6 的大作中提到】
: 我一直认为design patterns就是垃圾。30 个design pattern,名字我都记不住, 有
: 些又很类似。语言中常用的 概念, inheritance, abstract class/interface,
: template,很容易就用了,非得套用pattern,显得别扭。

avatar
s*7
38
java 大多数 interface 只有一个implementation, 都是吃饱了撑的
你要知道,不少大厂performance 还有数行数这个指标,狗家就这样
只要review 能过,code越长越好, 年底bonus, refresh 都挂钩
avatar
m*n
39
“不少大厂performance 还有数行数这个指标,狗家就这样
只要review 能过,code越长越好, 年底bonus, refresh 都挂钩”
说得他妈的太对了——给我写Python的程序员就这样,一个函数从前端得跳两次才传到
最后的后端真正处理的函数。还自豪的说自己写了1万行,恶心的接班的都不敢读。
avatar
a*3
40
code 越长越好? 你不是在逗我。。。 perf跟你写的cl数都没关系,更别说长短了。
除非你是contractor。。。

【在 s******7 的大作中提到】
: java 大多数 interface 只有一个implementation, 都是吃饱了撑的
: 你要知道,不少大厂performance 还有数行数这个指标,狗家就这样
: 只要review 能过,code越长越好, 年底bonus, refresh 都挂钩

avatar
R*6
41
有一次 trouble shot an issue, 跳进了Chain of Responsibility的陷阱,
callstack上足足有200个一样的function call. 初始可能没这么多,后来越来越多,
这样一层一层的call, performance 也受影响吧。
avatar
t*n
42
dependency injection滥用确实很傻逼,搞得程序更难写难懂。
稍微用点就行了。现在是走火入魔。
avatar
m*a
43
https://www.mitbbs.com/article/Programming/31544451_0.html
比如print一句hello world吧。main函数里print一下?太面向过程,太low了。
得封装一个类。叫Printer. Printer有个成员方法,叫print。但是!光一个类太low
了,以后要是有不同的实现怎么办?所以得加一个接口。PrinterInterface。
但是!interface是没有实现的,还是要有默认实现才行。所以得加个虚拟类,
AbstractPrinter实现PrinterInterface,然后Printer继承AbstractPrinter。但是!
你有了那么一套,该怎么创建实例呢?直接new Printer()?太low了,那叫实现依赖。
肯定不行的,所以要搞一个工厂类,PrinterFactory,PrinterFactory用
PrinterInterface返回实例,这样就隐藏了实现细节了。但是!PrinterFactory本身也
是实现类啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory
. 而且在PrinterFactory里面该怎么写呢?直接new Printer()? 太low了。还是实现依
赖。
最后,你要把这一堆玩意在代码里组装起来,也太难看了,各种new实现类。太low!好
在我们有个高级玩意,叫依赖注入!把程序对象结构全写到配置文件里面。这一套当然
是不能自己造轮子的。配置Spring吧。搞了那么多lib,靠命令行或者IDE的项目管理肯
定不够啊,得有依赖管理。
Maven啊Gradle啊使劲上。最最后,要print的东西怎么传给程序呢?硬编码?命令行传
参数?太low!当然得写在XML里头。光是XML当然还不够企业级,再加上DTD验证吧。然
后就涉及到了XML解析的问题了。代码里直接操起parser吗?太low! 当然要写个parser
的包装类,interface, abstract class, implementation class, factory class再来
一套。
毕竟,不能依赖实现啊,以后我要是换parser了怎么办。所以最后是成品是一堆配置文
件,一堆jar,compile出来的程序200MB。IDE得装上300个插件,打开项目硬盘响老半
天吃掉2GB内存,然后一堆插件弹提示要求升级。哦对了,在这一切发生之前,还得画
UML图呢。三年后项目完工了,部署到客户的服务器上一跑,立马崩溃,一地的stack
trace。
原来客户服务器上用的是JDK 8而新项目需要JDK 11. 然后问客户你们不能升级吗,答
案是不行,因为另外一个企业级开发组给做的企业级解决方案只支持JDK 8。接着客户
把你们的架构师臭骂了一顿,你搞了那么多设计就没有想过可能会换JDK吗?
http://www.mitbbs.com/bbsann2/chinese.faq/WashingtonDC/D13455539052B0/M.1334766600_2.D0/.NET%D6%AA%CA%B6%B5%E3
1:懂得直接写HELLO WORLD
2:懂得弄个function,然后整出HELLO WORLD
3:懂得弄个Interface+Abstract Class+Implement Class写出HELLO WORLD
4:懂得Dependency Injection依然是弄出个HELLO WORLD
5:Predicate Builder/Reflection
6:常用的Design Pattern: Data Repository/Factory method/Singleton
3-6都精通,保证你年薪6位以上,而且基本是摸到框架师的边了
====================================================
链接:https://www.zhihu.com/question/23757237/answer/25564019
一句话To A Man with a Hammer, Everything Looks Like a Nail.举个明白点的例子
,转个之前看到的东西让我们专注于这个例子。这个问题很经典:写一个在标准输出打
印“你好世界!”的程序(在 Java 中):System.out.println("hello world");代码
看起来太简单了。让我们能不能用用几个设计模式?看看……首先我们定义两个接口对
象和监听器来增加监听器。public interface Subject {
public void attach(Observer observer);
public void detach(Observer observer);
public void notifyObservers();
}
public interface Observer {
public void update(Subject subject);
}再定义 HelloWorldSubject 和 HelloWorldObserver 然后实现它们。 private
ArrayList observers;
private String str;
public HelloWorldSubject() {
super();
observers = new ArrayList();
}
public void attach(Observer observer) {
observers.add(observer);
}
public void detach(Observer observer) {
observers.remove(observer);
}
public void notifyObservers() {
Iterator iter = observers.iterator();
while (iter.hasNext()) {
Observer observer = iter.next();
observer.update(this);
}
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
notifyObservers();
}
}
public class HelloWorldObserver implements Observer {
public void update(Subject subject) {
HelloWorldSubject sub = (HelloWorldSubject)subject;
System.out.println(sub.getStr());
}
}然后我们增加一个命令。public interface Command {
void execute();
}
public class HelloWorldCommand implements Command {
private HelloWorldSubject subject;
public HelloWorldCommand(Subject subject) {
super();
this.subject = (HelloWorldSubject)subject;
}
public void execute() {
subject.setStr("hello world");
}
}然后我们增加一个抽象工厂。public interface AbstractFactory {
public Subject createSubject();
public Observer createObserver();
public Command createCommand(Subject subject);
}
public class HelloWorldFactory implements AbstractFactory {
public Subject createSubject() {
return new HelloWorldSubject();
}
public Observer createObserver() {
return new HelloWorldObserver();
}
public Command createCommand(Subject subject) {
return new HelloWorldCommand(subject);
}
}然后最后地,一个单件。public class FactoryMakerSingleton {
private static FactoryMakerSingleton instance = null;
private AbstractFactory factory;
private FactoryMakerSingleton() {
factory = new HelloWorldFactory();
}
public static synchronized FactoryMakerSingleton getInstance() {
if (instance == null) {
instance = new FactoryMakerSingleton();
}
return instance;
}
public AbstractFactory getFactory() {
return factory;
}
}最后是主类。public class AbuseDesignPatterns {
public static void main(String[] args) {
AbstractFactory factory = FactoryMakerSingleton.getInstance().
getFactory();
Subject subject = factory.createSubject();
subject.attach(factory.createObserver());
Command command = factory.createCommand(subject);
command.execute();
}
}然后输出:Hello World哇,我们在 Hello World 中用了四个设计模式耶!(好吧,
其实还有一个迭代器,但我们使用了 Java 的内建迭代器)这一定是一个优秀的设计!

90%

【在 d**********e 的大作中提到】
: 前端一个API经过好几个microservice传来传去最后才到数据库,很简单的逻辑被拆成
: 了好多步骤,总共200行的class有7,8个dependency injection,一个method能完成的
: 事,左一个builder又一个mapper的,绕来绕去都不知道最开始要干嘛了,而且大概90%
: 的interface只有一个实现,都只有1-2个method。。以前看王垠博客吐槽java码农滥用
: patterns把简单的问题复杂化,这个算不算,还是我太菜了,工业代码就是该这样写。
: 。FLG里Java都是怎么写的呢?网上有没有大公司开源的后端java service项目可以学
: 习一下?

avatar
R*6
44
真是见识了。我上学时,IoC这个术语 比 dependency injection 用的多一些。
avatar
j*n
45
确实

【在 h****e 的大作中提到】
: 不另类,有了lambda之后很多OO design patterns变垃圾了。
avatar
j*n
46
哈哈

low
AbstractPrinterFactory

【在 m****a 的大作中提到】
: https://www.mitbbs.com/article/Programming/31544451_0.html
: 比如print一句hello world吧。main函数里print一下?太面向过程,太low了。
: 得封装一个类。叫Printer. Printer有个成员方法,叫print。但是!光一个类太low
: 了,以后要是有不同的实现怎么办?所以得加一个接口。PrinterInterface。
: 但是!interface是没有实现的,还是要有默认实现才行。所以得加个虚拟类,
: AbstractPrinter实现PrinterInterface,然后Printer继承AbstractPrinter。但是!
: 你有了那么一套,该怎么创建实例呢?直接new Printer()?太low了,那叫实现依赖。
: 肯定不行的,所以要搞一个工厂类,PrinterFactory,PrinterFactory用
: PrinterInterface返回实例,这样就隐藏了实现细节了。但是!PrinterFactory本身也
: 是实现类啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory

avatar
y*w
47
太牛逼了
我没毕业的时候有挺长一段时间都在研究怎样写c++ template,基本比照boost那种风
格。后来一天忽然想明白了,我他妈又不想去写底层库,一般应用级考虑这些玩意儿就
是自虐加骗钱啊,当然漂亮话得说是“研究那东西研究到形而上学”

low
AbstractPrinterFactory

【在 m****a 的大作中提到】
: https://www.mitbbs.com/article/Programming/31544451_0.html
: 比如print一句hello world吧。main函数里print一下?太面向过程,太low了。
: 得封装一个类。叫Printer. Printer有个成员方法,叫print。但是!光一个类太low
: 了,以后要是有不同的实现怎么办?所以得加一个接口。PrinterInterface。
: 但是!interface是没有实现的,还是要有默认实现才行。所以得加个虚拟类,
: AbstractPrinter实现PrinterInterface,然后Printer继承AbstractPrinter。但是!
: 你有了那么一套,该怎么创建实例呢?直接new Printer()?太low了,那叫实现依赖。
: 肯定不行的,所以要搞一个工厂类,PrinterFactory,PrinterFactory用
: PrinterInterface返回实例,这样就隐藏了实现细节了。但是!PrinterFactory本身也
: 是实现类啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory

avatar
c*v
48
所以我前面推薦那本 interdisciplinary approach嘛。
風格簡練純正。再有就是effective java那本書至少1/3的內容是很有道理的。
java各種wrapper什麼的,都是有用----with respect to 某些擴展的可能,某些
robust問題...
沒有對with respect to後面這些內容的了解。無腦上各種抽象,或者無腦不用。
都會出問題的。

【在 y****w 的大作中提到】
: 太牛逼了
: 我没毕业的时候有挺长一段时间都在研究怎样写c++ template,基本比照boost那种风
: 格。后来一天忽然想明白了,我他妈又不想去写底层库,一般应用级考虑这些玩意儿就
: 是自虐加骗钱啊,当然漂亮话得说是“研究那东西研究到形而上学”
:
: low
: AbstractPrinterFactory

avatar
n*2
49

90%

【在 d**********e 的大作中提到】
: 前端一个API经过好几个microservice传来传去最后才到数据库,很简单的逻辑被拆成
: 了好多步骤,总共200行的class有7,8个dependency injection,一个method能完成的
: 事,左一个builder又一个mapper的,绕来绕去都不知道最开始要干嘛了,而且大概90%
: 的interface只有一个实现,都只有1-2个method。。以前看王垠博客吐槽java码农滥用
: patterns把简单的问题复杂化,这个算不算,还是我太菜了,工业代码就是该这样写。
: 。FLG里Java都是怎么写的呢?网上有没有大公司开源的后端java service项目可以学
: 习一下?

avatar
w*m
50
写java就用spring
大家都轻松
avatar
h*c
51
FYI
https://www.roguelazer.com/2020/07/etcd-or-why-modern-software-makes-me-sad/
That's it. That's the story. Popular modern technology is taken over by
expats from a megacorp and made worse in the service of a hyper-specialized
(and just plain over-hyped) orchestration platform. That's the world today.
Anything that has a simple and elegant feature-set ends up coöpted by
people who just want to build big ungainly architecture and ends up
inheriting features from whatever megacorp the coöpters came from9. The
software development world would prefer to use their multi-gigabyte IDEs
running on ElectronJS to build thousand-dependency Java applications
targeting ungainly APIs on hard-to-operate systems than support something
simpler and better. Quality is, alas, a dying art.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。