最近几个月我对编码katas很感兴趣.我相信它们是磨练我的编程技巧和提高我在工作中编写的代码质量的好方法.
Katas可以在很多地方找到.喜欢..
http://schuchert.wikispaces.com/Katas
我发现这些是Katas的优秀资料库......我对其中一些人的尝试得到了极大的回报.
但是,我觉得到目前为止我见过的所有卡塔都有一个短暂的来临.他们似乎都不允许我练习重构坏代码.第一次学习如何编写干净的代码真是太棒了...但在我目前的工作中,我没有太多机会编写新代码.相反,我经常与遗留代码作斗争并试图弄清楚如何重构模块,消除依赖关系并减少耦合.
因此,我正在寻找一些可以用来磨练我重构遗留代码并将其转换为干净代码的技能的Katas.
有谁知道任何已存在的?我知道我在工作的时候会接受很多练习...但是我想磨练自己的技能,以便能够快速地看到如何分离依赖关系,并在课堂上分离关注点做得太多了.
有什么区别
1.List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia)); //copy
2.List<Integer> list2 = Arrays.asList(ia);
Run Code Online (Sandbox Code Playgroud)
哪里ia是整数数组.
我开始知道不允许进行某些操作list2.为什么会这样?它是如何存储在内存中的(引用/复制)?
当我洗牌时,list1不会影响原始数组,但list2确实如此.但仍list2有些令人困惑.
如何ArrayList列出列表与创建新列表不同ArrayList
list1 differs from (1)
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));
Run Code Online (Sandbox Code Playgroud) 我知道这听起来很傻,我知道C不是面向对象的语言.
但有没有办法在C中实现动态方法调度?我考虑过函数指针,但没有得到完整的想法.
我怎么能实现这个?
7.22.3.4 malloc函数malloc函数为一个对象分配空间,该对象的大小由size指定,其值是不确定的.
原型: void *malloc(size_t size);
我尝试将负值作为参数传递:malloc(negative)return NULL.
是因为[size_t]否定转换为无符号[某个大值]并且不能分配所需的空间或者是函数检查参数并返回NULL?
如果它转换为大正值,那么当malloc(INT_MIN+2)它调用它仍然返回NULL,但malloc(0)分配指针和*p = somevalue工作.那这个呢?
它是实现定义的吗?
阅读此链接:malloc(0)
静态内部类M和M[类C]的静态成员如何共享同一个名称?
以下代码生成"White"作为输出:
public class Amazed{
public static void main(String[] args) {
System.out.println(B.M.W);
}
}
class B {
public static class M {
static String W = "Black";
}
static C M = new C();
}
class C {
String W = "White";
}
Run Code Online (Sandbox Code Playgroud)
如何访问成员对象而不是静态类成员:W ["Black"]
如果我想访问静态类M中的成员怎么做?
Sizeof运算符是编译时运算符.在编译期间使用常量结果值转换sizeof表达式.[异常可变参数模板c99]
通常,编译器会在编译时修复变量的大小.对于数组n.但是,当我打印sizeof数组时,它给出了正确的大小?这个代码在编译时为n分配内存吗?
那么sizeof的评估方式呢?
数组a []在函数中怎么样?
int fun(int n)
{
char a[n+3];
return sizeof(a);
}
int
main( )
{
int i;
while(i!=-1){
scanf("%d",&i);
int n[i];
printf("\nsize: %d %d\n",fun(3),sizeof n);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个:sizeof正确打印n的大小[(sizeof(int))*i]但该函数总是给出错误的结果6?
如何实现sizeof并计算大小(对于float,int,...数据类型,变量,数组......)?
任何代码表示赞赏!
我有两个列表dest(包含:x)和点(x,y)
dest:List[Int] and Points:List[(Int,Int)]
Run Code Online (Sandbox Code Playgroud)
我想过滤dest中的元素,如果它存在于点(x == points._1) i中
var newl:List[Int] = List()
for(x<-dest) if(!points.filter(_._1==x).isEmpty) newl=newl:+x
Run Code Online (Sandbox Code Playgroud)
我觉得必须有一个更好的简洁方式与存在但元组使它复杂.那么最好的方法是什么呢?
这些值如何在java中相同?
-Integer.MIN_VALUE == Integer.MIN_VALUE
Run Code Online (Sandbox Code Playgroud)
价值观是:
-2147483648 : -2147483648
Run Code Online (Sandbox Code Playgroud)
我试着比较它并返回真实[惊人!]
假设我有一个包含关系运算符的字符串:
"x<y , x=y , x<=y , x>y , x>=y"
Run Code Online (Sandbox Code Playgroud)
我怎么能分开这个?
如果我使用[<>=]它将'拆分x<=y为(x和=y).
有没有简单的方法可以不用编写我们自己的功能来分割?
这是java docs for deadlock的教程.我没有得到线程被阻止的地方.因为它同步我以为只有一个线程会进入弓形.但两人都进了弓.[等待[但什么时候?]]
那问题在哪里?
当我添加注释[print statements to trace].没有僵局.怎么样?
public class Deadlock {
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public synchronized void bow(Friend bower) {
System.out.format("%s: %s" + " has bowed to me!%n", this.name, bower.getName());
bower.bowBack(this);
}
public synchronized void bowBack(Friend bower) {
System.out.format("%s: %s"
+ " has bowed back to me!%n",
this.name, bower.getName());
}
}
public static void main(String[] args) {
final …Run Code Online (Sandbox Code Playgroud) java ×5
c ×3
list ×2
collections ×1
comparison ×1
legacy-code ×1
malloc ×1
oop ×1
refactoring ×1
regex ×1
scala ×1
sizeof ×1
vtable ×1