j********x 发帖数: 2330 | 1 我记得linus对java的评价似乎是低于c++的、、、 |
|
|
|
i***o 发帖数: 750 | 4 没有搞c++的会因为指针瞧不起别人。而且指针也不是c++最nb的地方。要说起来java还
是承自c的呢。
你挂嘴边的企业级应用 和java有屁关系?在java以前就没有企业应用了? 那些总结的
pattern,不是java独有的。
再说一遍,即便是那些pattern也不是金科玉律。
用。 |
|
|
g*****g 发帖数: 34805 | 6 我没说那些design pattern是java独有的,指针也不是C++独有的。但很多design
pattern确实是C++实现不了的,因为没有built-in reflection和serialization.既然
本版有C++程序员认为写Java的弱是因为写不了指针,我也可以认为写C++的弱是因为不
懂design pattern。很完美的逻辑。
敢问指针跟C++有屁关系?在C++之前就没有指针了? |
|
z*******3 发帖数: 13709 | 7 java之前有企业应用
但是濒临绝境,因为维护成本随着项目的增大,呈现指数级上升
所以有了人月神话那本书,那本书也是最早软件工程这个学科的圣经
可以说也就是有了这本书之后,软件工程才真正开始发展起来
只不过有趣的是
到今天还有人以为
大型项目的问题,还跟30年前一样,以为人们还在面临着相同的问题
刻舟求剑
那本书提高了一个很经典的沟通成本的问题
就是一个面向过程的开发语言的死结
所以才有了后来的面向对象
也正是通过面向对象语言的大规模采用
才使得这种沟通成本大大降低,模块化结构化的思想深入人心
后来才有了虚拟机这个东西,有了虚拟机
就保证程序能够跑在所有的os上,至少理论上是这样
然后jdbc保证了程序能跟所有的数据库合作,hibernate等工具强化了这一合作
再通过其他手段,比如tomcat等开源工具,保证了能跟浏览器客户端浏览器的合作
还有jni提供了跟c以及c++等语言的接口
所以真正最大的glue是java
包括r什么function language都有跟java的接口
这才是java的真正威力所在
而不是什么某一个语言上的feature的好坏
只对比语言某一个featur... 阅读全帖 |
|
|
z****e 发帖数: 54598 | 9 这几倍代码不一定要写
可以自动生成,比如敲入{,自动匹配一个}
比如setter/getter,这些都是自动生成的
而且人要偷懒,那是对于消费者而言
不是对于提供者而言,很多时候提供者甚至会更为麻烦一点
比如飞机和马车,坐飞机效率很高
但是开飞机的要求高得多,造飞机的就更麻烦了
所以如果你做出的东西比前人的东西能在消费者的体验上更好一点的话
那我是赞同这个东西的前景的
但是如果仅仅是一个代码量的减少的话
那这个你说要引发一波革命
嗯 |
|
c*********e 发帖数: 16335 | 10 java也就是用个xml文件来做dependency injection,用setter来注入。这个其实是为了
各个class之间的loose coupling.其实没啥新鲜的。当初css从html里面分离出来,成
为一个单独的文件,也是这个思路。 |
|
w**z 发帖数: 8232 | 11 周一去算算,俺们那有多少行。我从来没注意project 里代码的行数 有啥工具可用?
写个value object, IDE 一点,哗啦, getter, setter, 上百行, 再加个builder,
又上百行。半小时可以搞出300多行。 |
|
n****1 发帖数: 1136 | 12 俺就一土鳖,和大牛扯不上。 觉得JSON用来在模块间传输数据很好, 但作为object的
表达形式就把封装完全丢了。
虽然我不觉得封装是OOP的专利, 但觉得封装还是非常重要的。 高内聚低耦合这些理
念是所有良好设计的特点。 我能想到的最明显的好处:
1. 封装能保证各模块之间的界限和责任更加分明.
2. 方便代码重构. 没有啥架构一上来就是完美的,封装能把重构的损失降到最低程度.
3. 封装好的往往性能也好, 因为这样容易识别值得优化的地方。
俺不喜欢OOP是因为俺觉得它就一hype, 稍微好点新思想都被扭曲为OOP思想。 还有就
是"一切皆对象"的死板作风。 俺觉得OOP与FP最大的分歧在于mutable state, 而不是
封装(visible state)。 其实在haskell里面getter也用的很多(setter不多是因为
immutable)
OO |
|
z****e 发帖数: 54598 | 13 java里面大部分比其他脚本语言繁琐的地方
都可以通过ide来做,比如setter/getter方法,都是通过ide自动生成的
很多人喜欢拿这个来说java繁琐,我只能说,这种问题你都能想到
别人能想不到?早搞定了
而反过来,java优势,比如静态类型通过ide纠错
恰恰是其他脚本所不具备的
fp需要搞immutable,这本身就很逆天
我觉得immutable要让一个人理解,比oo难理解多了
而且如果你只是为了回避多线程而使用immutable的话
那我随便找一个线程管理的framework,比如tomcat或者vert.x或者actor模型
其实也没难到哪里去,多线程在server side其实问题已经不大
最麻烦的是游戏server,这个才是我头疼的重点,这个其实脚本压根没解决
管他什么脚本fp,不管是js还是scala,都会遇到java一样的问题 |
|
X****r 发帖数: 3557 | 14 看起来楼主想要使这个成员的类型和类本身covariant,就是
class Node {
protected:
Node *next;
};
class Node1D : public Node {
protected:
Node1D *next;
};
但是这两个next是同一个成员。这个不能直接这样写,但是可以用setter/getter模拟:
class Node {
private:
Node *next;
protected:
Node *getNext() { return next; }
void setNext(Node *newNext) { next = newNext; }
};
class Node1D : public Node {
protected:
Node1D *getNext() { return (Node1D *)Node::getNext(); }
void setNext(Node1D *newNext) { Node::setNext(newNext); }
};
好久没写C++了,语法错了勿怪。 |
|
z****e 发帖数: 54598 | 15 显然不是
xuer最出名的一次是那次公然发帖
说手下一个北航毕业的孩子
把一个object里面的attributes用setter/getter方法给包装起来
引起它大怒,然后要求全部去掉,直接访问内部attribute
引发一群人围观,自此成名 |
|
G**Y 发帖数: 33224 | 16 OO,尤其是Java和C++那种,现在看也是太复杂了。比如所有东西都要getter/setter,
就是脱了裤子放屁。 |
|
W***o 发帖数: 6519 | 17 最近在玩 java web framework 包括 Spring MVC, Ninja framework, 我觉得最繁琐的
地方是写template里面的form html 代码,我觉得这个应该可以有个工具根据model类
自动生成一个html form. 比如我有下面的这个 Book 类:
public class Book
{
private String title;
private String author;
public Book() {}
/* getter and setter omitted */
}
如果需要一个html form向数据库里提交 new Book,所以html input fields有两个:
author, title
这个form如果能自动生成就好了,请问有没有这样一种工具? |
|
x***4 发帖数: 1815 | 18 抱歉一下: 我的意思是指那些像operator的method。比如说setter是 var_=(xyz)。 |
|
l*******b 发帖数: 2586 | 19 java 都是getter setter 还有add minus. 没人用加减乘除括号这种小学生的东西
写代码都是地道的xx口音边写边念, now control space...... |
|
|
m******u 发帖数: 12400 | 21 Why the parameter from initialize method can't give the value to the new
created object?
I am talk Ruby here, I assume there is a similar underlying mechanism in
other languages, so I think it is a general question.
Thanks for your answering and replying. |
|
a*********a 发帖数: 3656 | 22 你给的连接很有意思:http://www.edudemic.com/how-many-lines-of-code-is-that/
“Over 100 million lines of code: the US healthcare.gov website (reportedly)
” 下面的图显示government.gov是5亿行code!这还是个半成品!
LHC是c++的。一两百万行可以找到Higgs粒子了。
你把LHC用java写,我估计文件数量翻100倍,类的数量加50倍,把所有的import,
setter, getter语句加起来,啥正事没干,恐怕就百万行了。写完了,运行时间增加10
倍,所有研究生65岁拿学位。
Telescope
Chrome,
Boeing |
|
a*********a 发帖数: 3656 | 23 夹娃6000行,可能刚把import,getter,setter写完。夹娃6000个文件,可能一个具体类
都还没定义。而具体类的申明和定义都在同一个文件。
所以写夹娃没有IDE确实挺遭罪的。 |
|
w***g 发帖数: 5958 | 24 像我这种单干的倒没这么复杂,只是想如何能最快地把东西做出来。我一直不喜欢java
是因为用java写boilerplate代码太多太多,尽写setter/getter和catch exception了
。上了scala做同样的事情少写好多代码。版上像我这种单干的应该不多,可能对大家
没啥借鉴意义。 |
|
l******t 发帖数: 55733 | 25 pattern match这么高大上的东西被你理解成getter setter了 |
|
g*****g 发帖数: 34805 | 26 LOL,多加几个符号做syntax sugar也能叫嚷半天。boiler plate本来就不是语言built
-in必须解决的问题,用类库也是一样的。而且很多IDE都能帮你做,比如getter,
setter。你把它们简化又如何?还不是一样IDE帮你做。
这么喜欢符号,应该上Scala,相比之下C#不是一般的小儿科。 |
|
d******e 发帖数: 2265 | 27 OO那个部分坑最多。
其实我觉得真的没有比较要继承什么,封装什么的java里面要搞个private, getter
setter. 四眼齐,强迫症 啊
糟粕啊。下一个流行语言估计要简化。 |
|
d****n 发帖数: 1637 | 28 第一中setter 最合适
obj
.setAttribX()
.setAttribY()
.run()
要是getter就不能死板成第一中
var x = obj.getX() |
|
d****i 发帖数: 4809 | 29 你没有理解这些annotation的真正用法,应该是返回一个Java object或者Response。
org.json.JSONObject已经是json了,不用像你这样包装成json。应该写成
@GET
@Path("/getJson1")
@Produces(MediaType.APPLICATION_JSON)
public MyObject getJSON1() {
MyObject obj = new MyObject();
obj.setInput("This is input");
obj.setOutput("This is output");
return obj
}
然后定义MyObject class:
public class MyObject {
private String input;
private String output;
// setters and getters
......
} |
|
t**r 发帖数: 3428 | 30 你确定python没有?tab先搞死一堆入门的。
还有各种丑陋的underscore. 内置函数什么的。
要说恶心python当第二没人敢称第一。
java的dirty little secret也不少,什么函数名大小写 getter setter什么的 对新手
也是挑战。 |
|
c*****e 发帖数: 3226 | 31
Python 我也同意有些恶心。
java 哪有强制函数名大小写?那只是 readability吧!
getter / setter 很 natual 的概念啊。而且也不是强制的,如果属性是 public 的话。
学来学去, 感觉 java 真是个不错的语言。没别的,就是让你用起来舒服。 至于 多
线程,UI 方面, 确实需要提高。
可是多线程并发, go 也比不过 Erlang. 只能说 Go 多线程方面是矮子里面拔高。哈哈 |
|
g*****g 发帖数: 34805 | 32 With defined fields, a java bean is a few clicks away to generate these
functions in a modern day IDE, probably taking less time to write than a
case class in Scala.
I am not denying Java is more verbose, but it also offers more flexibility,
like sometimes you want to override setter. |
|
g*****g 发帖数: 34805 | 33 Java8 可以让你写 oneliner, 并不逼着你写 oneliner. 你这个方法参数太多了,本身
就不是好的设计。真要 oneliner用 fluid风格一堆 setter过去都清楚的多。
hasDoneCheck)) |
|
|
l**********n 发帖数: 8443 | 35 http://www.javaworld.com/article/2073723/core-java/why-getter-a
They provide external access to implementation details. They violate the
encapsulation principle.
These procedural programmers read somewhere that fields should be private,
however, so they make the fields private and supply public accessor methods. |
|
d******e 发帖数: 2265 | 36 这片文章也是捣浆糊。傻逼java 程序猿每天研究怎么对象化,可惜这个对象化就众说
纷纭,一人一个想法。
违法这个原则那个原则。
殊不知,这些原则本身都是某些人对雨某些特定问题的特定解决方案。
methods. |
|
d******e 发帖数: 2265 | 37 scala, es6, python
莫有default para,什么都要builder,setter
莫有pattern matching
某有case class,用immutables这个烂货模拟。
某有tuple.
... |
|
f********f 发帖数: 475 | 38 改成private setter, 没出错,那说明没有其他地方改它的值。
reportInputData里有个constructor, 里面的foreach是专门给currencySummaryData
赋值的:
public ReportInputDataModels(ReportOutPutDataModels outputData)
{
startDate = outputData.startDate;
endDate = outputData.endDate;
enableRange = outputData.enableRange;
seperateReport = outputData.seperateReport;
reportName = Resources.Global.CurrencyReport;
groups = outputData.groups;
groupNa... 阅读全帖 |
|
j*******l 发帖数: 1066 | 39 你举个例子 怎么remove final 然后用mockito测试? setter injection? |
|
p*****2 发帖数: 21240 | 40
setter injection也好不了。我说的是field injection |
|
w********m 发帖数: 1137 | 41 instance的变量有各种级别的scope。就算是public的,也有setter和getter。
redux什么东西都在一个global的array里。
每次动一下,都要这个array做copy on write。复杂度把做后端的会气死。
还会误用。redux怎么办了?
就是写多大写加下划线的constant,对应很多接受这些constant的action。
所以写的很累,你要记住这些玩意。 |
|
b***i 发帖数: 3043 | 42 第一次提交就被骂。要求是增加一个getter/setter,并加到单元测试里头。
我就写了。照着代码的其他部分写的。比如,代码里面变量都是大写,我就同样的变量
用大写。帮助我的那个人动态生成了一个类的变量:
XXXX* x = new XXXX(...);
我一看,喝,没释放。于是看其他部分用了智能指针就也用了智能指针。
然后不会测试,叫帮我的那个人来看看。他看了一下,配置了测试的文件,于是可以通
过了。他就在我机器上提交了。立刻收到了审查者的两封邮件,第一封说,为什么要用
堆,不用栈上的变量。第二封嫌测试的内容太少。问题是其他的测试函数都是这么少,
其他的函数里面都是用智能指针,没有用栈上的变量。
我以前跟他说C++11有很多好处,我提到可以用auto。他立马说不喜欢auto,因为很多
情况造成了复制却不知道。这个人是不是很难对付啊?要是这样的话,我就装孙子吧。
听说我们公司喜欢听话的,不喜欢自己有主意的,不喜欢犯上的。 |
|
i*****9 发帖数: 3157 | 43 auto 会造成复制不知道?反过来说该复制没复制还差不多吧?
:第一次提交就被骂。要求是增加一个getter/setter,并加到单元测试里头。
: |
|
发帖数: 1 | 44 好吧,问题解决了。不因该用double underscore。
但是还是不明白为什么用了dunder结果回事10,20,10,20 |
|
发帖数: 1 | 45 我就是为了测试name mangling。但是现在明白鸟。
Python只mangle class definition中的 dunder variable name,之外的就直接当作
variable name了。
在document里面招到了原话:
This mangling is done without regard to the syntactic position of the
identifier, as long as it occurs within the definition of a class. |
|
|
l****z 发帖数: 29846 | 47 by Malcolm McKay
Recent political battles in Europe over IFRS may have slowed the timeline on
progress of adoption of an IFRS road map in the U.S.
Reports suggest that the International Accounting Standards Board is in
turmoil over the independence of standard-setters among other issues. With
the U.S. watching on the sidelines, conflicting signals are being sent and
questions are being asked about what the rush is toward adoption of IFRS in
the U.S.—if the IASB, which sets IFRS standards, can’t |
|
f****o 发帖数: 31 | 48 here is the answer:
An "ideal" represents something we can aspire to and good mentoring has its
exceptional paragons. William
Silen, M.D., Dean for Faculty Development and Diversity at Harvard Medical
School, describes it this way: "the
truly complete mentor is a single individual who is able to serve as an
advisor/guide, developer of
talent/coach, opener of doors/advocate, role model, interpreter of
organizational or professional rules,
protector, rule setter/boss - and carries on all of these ... 阅读全帖 |
|
h**********k 发帖数: 168 | 49 that is a mentality of a laggard... what 轨 to 接 if you are a leader/trend-
setter? It is others who should 接 your 轨. |
|