我最近发现自己处理了一个(内部)应用程序,我已经写给我公司喜欢雇用的两个候选人,以协助维护和添加次要功能.
这是我写的第一个"生产"应用程序,它有45k LOC,我花了将近两年的"独奏"开发.我还很年轻(18岁),从头开始编写应用程序,同时签约作为离开公司的前开发人员的替身.我没有经验设计这种大小的应用程序,我试图使用常见的架构和设计模式.
今天我知道我已经做了一些严肃的过度工程,例如使用断开连接的变更跟踪架构而不是所选ORM已经实现的工作单元模式.我可能永远不会去"真正的"三层.
两位候选人都有10年以上的内部应用程序开发背景和相关平台.作为他们年龄的一半,没有经验,我尊重他们的意见.当我向他们解释应用程序架构时,评论是这样的:
现在我问自己:
我是建筑宇航员吗?我怎么知道我在建筑方面走得太远了?过度工程的常见症状有哪些?
为什么java中我们做不到:
List<List<? extends Number>> aList = new ArrayList<List<Number>>();
Run Code Online (Sandbox Code Playgroud)
即使这样也可以:
List<? extends Number> aList = new ArrayList<Number>();
Run Code Online (Sandbox Code Playgroud)
编译器错误消息是:
Type mismatch: cannot convert from ArrayList<List<Number>> to List<List<? extends Number>>
您如何看待使用私有静态方法?
就个人而言,我更喜欢使用静态私有方法来进行非静态,只要它不需要访问任何实例字段.
但我听说这种做法违反了OOP原则.
编辑:我想从风格的角度来看,而不是表现.
我知道C#(和.NET一般)在属性上很重要.然而,尽管我已用C#编程多年,但我还没有发现自己曾经使用它们.有人会让我开始使用它们,并解释哪些是最好的使用它们?
谢谢
做了全新的Eclipse,JDK和android-sdk安装.
我目前在创建新项目时收到此错误
[2010-09-26 16:07:56 - 测试]错误:无法打开类文件C:\ workspace\Test\gen\com\example\test\R.java:没有这样的文件或目录
这是什么原因,我该如何解决?
Eclipse Helios 32 bit
java version "1.6.0_21"
Android sdk API 8
Run Code Online (Sandbox Code Playgroud)
PS我是Android开发的新手.
编辑:我尝试了大多数解决方案,但没有任何效果.所以我开始使用我朋友安装的Eclipse Ganymede.
我有一个 List<PropA>
PropA
{
int a;
int b;
}
Run Code Online (Sandbox Code Playgroud)
和另一个 List<PropX>
PropX
{
int a;
int b;
}
Run Code Online (Sandbox Code Playgroud)
现在我必须使用lambda或LINQ 找到匹配b属性中List<PropX>存在的项目.List<PropA>
我最近参加了一次采访,他们问我"为什么接口比抽象类更受欢迎?"
我尝试给出一些答案,如:
他们让我带走你使用的任何JDBC api."为什么他们是接口?".
我可以为此得到更好的答案吗?
我正在超载operator new,但我最近遇到了对齐的问题.基本上,我有一个类IBase,提供operator new和delete所有必要的变种.所有类都派生自IBase并因此也使用自定义分配器.
我现在面临的问题是我有一个孩子Foo必须是16字节对齐,而所有其他孩子在对齐到8字节时都很好.然而,我的内存分配器只在默认情况下与8字节边界对齐,所以现在代码IBase::operator new返回一个不可用的内存块.这应该如何正确解决?
我可以简单地强制所有分配为16个字节,这将正常工作,直到弹出一个32字节对齐的类型.弄清楚里面的对齐operator new似乎并不是微不足道的(我可以在那里进行虚函数调用以获得实际的对齐吗?)推荐的处理方法是什么?
我知道malloc应该返回一块适合所有内容的内存,不幸的是,这个"所有内容"不包含SSE类型,我真的很想让这个工作无需用户记住哪种类型有哪个对齐.
java ×6
c# ×2
oop ×2
.net ×1
abstraction ×1
android ×1
architecture ×1
attributes ×1
background ×1
c++ ×1
coding-style ×1
collections ×1
eclipse ×1
generics ×1
image ×1
interface ×1
iterable ×1
jframe ×1
lambda ×1
linq ×1
new-operator ×1
r.java-file ×1
swing ×1