Showing posts with label ThinkingBug. Show all posts
Showing posts with label ThinkingBug. Show all posts

Wednesday, May 25, 2016

为什么当了十年的程序员还只是初级程序员?

昨天看到一篇文章,说一个干了十年的程序员还不如两年经验的程序员?

这是为什么呢?

一篇文章说到: 高级程序员 不是说看基本编程的书籍和写几万行代码就可以做到的!

高级程序员,不仅仅是靠天赋的,更重要的是后天的努力,没有人是天生就是天才的,那种人非常至少。大多数还都是普通人!


但是,什么人才能成为大神呢?

有钻研的精神的人?凡是都要问个为什么的人? 对什么事情都感到好奇的人。最重要的是有毅力的人。

为什么做了10年,还不如两年的呢?

因为十年的时间完全浪费了。时间的时间里面,他没有研究过真正底层的代码。很多东西: git  svn Mysql 仅仅是为了应付工作的需要,并不愿意花时间来研究,古人云只是虚长几岁而已, 闻道有先后,术业有专攻。 我是喜欢自己的钻研的人。很多的时候,我并不是很喜欢问别人,当然 浏览器除外。我是 非常喜欢使谷哥的孩子。 浏览器是一项伟大的发明。不亚于四大发明。

我用Git快半年的了,昨天,我才突然的顿悟。原来,我也仅仅只是会用而已。根本从来没有考虑过,他是怎么实现的,怎么进行数据存储和维护的,很多事情,我根本就没有深入的思考过的!

其实很多的时候,我们缺少的是耐心。我们更多的时间是本 Bug 和需求占用了,真的用来钻研技术的时间,我觉的是10经验的孩子,未必有那个2年经验的人花的时间多!

就是这样。


Stay  Foolish, Stay hungry!

Wednesday, May 11, 2016

代码重构的感悟

随着自己的能力的不断的增长,主要是自己的视野和格局在不断的增长。让自己,觉的现在的代码越来越垃圾了,急需重构代码。项目中的冗余代码越来越多,这是为什么呢?这是因为,之前开发规范的问题。没有一个很好的规范,导致了各种问题,当然也埋下了很多的坑!

这么说,一个六个人的团队,未必就会比一个人的做的好!因为,In China 很多的时候,我们往往只相信自己的能力,并不相信别人。总觉的被人是傻逼。一般的只要不是大公司,小公司也包括中型的公司,新人到了公司之后,缺少代码规范的训练。因为,似乎每个人都很忙,他们不知道,现在的很忙,导致了以后会更忙。新人,必须要代码规范。但是,很多初级的程序员,往往没有这种意识!需要我们来督促!

说说,今天! 今天上午发了包,下午有点自己的时间,可以让自己来重构自己的代码!说真的我很庆幸现在自己的状态,因为,我算是 天时  地利  人和。 我很是庆幸,比如我的哥们,小强,他作为一个新人刚到公司,看到公司垃圾的代码,但是,他不可以重构,因为,作为新人,到了公司没有什么话语权。这个社会就是这个样子的,新人要有新人的样子。就像PM 很多都是傻逼,娜姐除外。说白了,很多人根本就是看不起程序员,我们一般是比较理想化的人,活在自己的世界里面,感觉自己的世界里面,自己似乎可以做所有的事情!说白了,我就是自己的神。总之,我现在重构我的代码,没有意思的顾虑,就是只要自己有时间就好了!花点精力来做这件事情。我觉的代码就像自己的老婆一样,如果,你都不花心思来整理,还有谁会对你的代码上心呢?所以,代码可以变的更好,实现 可修改,可维护,可增量!

这个世界上的事情,需求是不断的改变的。假如 需求是死的,那么的你活着还有什么意思!
我们就生活在不断变化 的世界里面

下面说说我的重构代码的感悟:

1 命名规范
这个问题,真是很蛋疼呢?说白了,很多人写代码就是瞎鸡巴写,根本就不在谁来维护代码,只要代码实现了就好,什么有道词典,百度呀,google 翻译呀,瞎鸡巴乱搞,很快他们就实现了功能,老板很开心,因为,很快就看到了产品,在老板的心里面,产品的代码应该是整整齐齐的。但是,在程序猿的心里面代码是乱七八糟的,我说的是大多数的。作为,刚到公司的人急于表现自己的能力,想让自己的能力得到老板的肯定。然后,就瞎鸡巴揽活,拿到需求之后,看到产品原型图,就瞎鸡巴写,写了之后发现有问题,就开始瞎鸡巴改!真是蛋疼的狠!最后,发现 坑越来越多,自己的坑越来越多,这是一个量变促进质变的过程。到了最后,发现自己真的是改不动bug了!然后,递交了辞职信!   这尼玛就是坑货, 新来的人  又开始了死循环!

解决:
命名规范的问题,每种语言都有自己的特性,但是命名确实大同小异。你需要根据自己的习惯总结一套自己的命名规范。不是每个人都有这种意识,很庆幸,我有这种意识!这个东西,CTO 产品经理 可以制订一份文档,来规范用到的英文。没有在文档汇总的,程序员可以  google,添加到文档中!

命名的规范有很多,我就不介绍了,你们随便找找吧!

2  Utils
为什么要提取Utils
今天,我的项目中用到了ImageLoader.  DisPalyOptions 很多地方都初始化了,将近 100 多个地方都用自己重新定义了一下!这样的重复代码, 根本原因,我们开发的时候,很多的时候只会粘贴复制。粘贴复制到了 代码的重复!

我的原则:  重复的地方超过了3次以上,立马听一下工作开始重构代码,或者提取到工具类!

我这里建立 了一个ImageLoaderUtils, 来处理 不同的DisplayOptions,  displayImage(). 

但是,这么做有什么好处呢?

我有一个问题,加入有一天,我不想用ImageLoader了,我想换一种 图片加载工具,比如 Passco 实现图片的加载。但是,现在的代码修改起来,代价太大了。因为内部代码跟ImageLoader 的耦合度太大了,属于低内聚,高耦合。就是,所有用到ImageLoader的地方都要修改。这样很不好。

这个时候,我体会到了解释器设计模式的用处。

提取工具类是一个非常好的习惯。因为,可以消重。消除重复代码的原则:拆分和抽取。就是 大事化小,小事化了,了事化无。

用了ImageLoaderUtils 之后,我可以在这个累的基础之上去使用适配器模式,做不同的  图片加载工具的 adapter. 我只需要链接不同的 图片加载的特性。然后,抽取一个 BaseImageLodaerUtil 设置几个抽象的方法,然后,让子类实现以下,就可以了!具体的需要思考。


这就是我今天的收获!


















Tuesday, May 3, 2016

代码的感悟

感觉自己的代码的素养,比以前好多了。因为,现在看项目的时候,发现,项目里面的代码,需要优化的地方太多了,之前是没有这种感觉的,就是感觉,别人写的代码实在是烂透了,但是,如果我来修改的话,需要很多的时间和精力,但是,我并不是很愿意投入这么多的精力去做这件事情。

思考
思考代码
思考自己的代码

现在,有个问题,就是发现需要优化的代码。我老是想立马,就去做这件事情。但是,一旦做起来,时间过的好快。但是,一开始要做的事情,就忘记了。这样很不好。

学会开始
学会结束

Monday, April 25, 2016

代码的惰性

我们一开始在实现功能的时候,一定要记住,尽量的使用最好的方式。当初我做一个功能的时候,打算尽量用最简单的方式实现,当初只是为了方便,而且时间很紧急。所以,就把所有的功能都写到了一个Activity 里面,导致了这个Activity 非常的复杂。所以,在做的时候,一定要用最好的方式实现,不要得过且过。否则,后面代码修改和维护的时候,你就会哭了~

Friday, April 15, 2016

GeekHades 如何测试?

作为开发者,自己写的代码,Bug 一定是少不了的。我们在估算开发周期的时候,似乎只是估算了,写代码的时间,完全没有把,产品原型,设计和测试的时间,估算进来!

真的是醉了,开发完之后,等了好几天,马上就要发包的,这个时候,测试开始测试,一堆的问题,bug,待优化的问题,再过几个小时就发包了。这种模式,真的是折磨我的意志呀。蛋疼呀。自己的代码,要对自己的代码要负责。

测试的时间,越延迟。后面的问题,就会越多,所以,写完之后,应该尽快的让测试,进行测试,因为,问题,发现的越早越好。

自己写完的代码,就像是++的女人。真的是懒得在看一眼。如果,不是有问题,我是不会回头看的。

代码的余量,代码简洁,每个人写代码的风格是不一样的。所以,代码的风格和代码洁癖,直接导致了,各种的问题!你想重写代码的冲动,但是,代价太大了!有点让人恐惧呀!

测试,以后写完一个功能,需要立马测试,但是,每个人的又都有自己的工作,导致了测试的问题,一直在延迟,一直拖延到最后。这里的问题,从产品到开发,都有问题。最烦的莫过于,照着微信开发,往往不会给你产品原型图。这个时候,作为程序员的我就要开发创造了,不仅仅要胜任,产品经理的角色,还要做一个设计者。还有开发。我真他妈的是天才。写完之后,还要测试,真的是FullStack. 牛逼呀,小伙子!

今天,就吐到这里吧,真的是醉了,以后的问题,还有很多呢。慢慢的解决吧,这也是自己慢慢成长的而一个过程。

给自己,留一个余量。 来思考自己的代码!

今天,又给自己完了一个坑!  妈的上来就写,没有仔细的思考,预览的需求,导致了,实现的方案有问题,现在只能,从新写了,2个小时的时间白费了!

建立自己的工具库!

自己的代码规范!

最好,别让别人碰自己的代码!

思考的时间!

Tuesday, January 19, 2016

程序员必读的书单


个人喜欢的书单,看过的感觉很不错的推荐给大家:

1  《Refactoring》  《重构》
     Martin 大神写的,需要一定的代码量

2  《大话设计模式》  程杰
    面向对象的经典书籍,如果,你想在面向对象的路上走下去,就不用高级语言,写面向过程的代码!在这里是你对面向对象有更深的认识,提高自己的设计思维,提高自己的代码质量!

3  《代码简洁之道》
    很不错的书,交给你怎么样写出最简洁的代码,避免代码重复,代码重复是万恶之源!


Monday, November 30, 2015

面向对象的开发



我们再开的过程中,总是会遇到各种各样的问题。我是非常懒得,不喜欢多写一行代码!这就要求我们,在写之前先思考,怎么写才是最简单的,怎么样写,代码量最少!

今天我需要完成,两个界面的内容:


这两个界面是很简单的,很多初级的程序员。

1  菜鸟级别
奥,原来这么简单呀,这个很简单,就是一个布局,然后里卖弄去一个一个的实现ImageView + TextView.

这样写不好!

2  高级一点的
使用 GridView 实现, 这样可以根据数据动态的处理! 如果这里使员工饿了 GridView, 那我们就可以重用了!

3 面向对象
   开发原则就是 单一职责原则,
   一个Activity 对应一个单独的责任和能力!
   所以,显然这里是两个Acitvity. 但是,我不愿老是重复的东西,所以,我在实现了第一个Activity之后。再去写 第二个Acitivty 就是重复的写代码。 很多人会 讲 之前写好的Activity 复制一遍。 显然我并不能这么做的! 我也很喜欢这么做呀!
于是,我就用第二个Activity 继承自第一个完成的Activity , 抽出几个特殊的方法,定义访问权限为 protected

4  在之后
  我现在的架构,不好!    最好的方案,是抽取出一个抽象类,然后让这两个Activity 继承。 以后在家的时候,直接集成!









Friday, November 27, 2015

Execution failed for task ':app:transformResourcesWithMergeJavaResForDevDebugAndroidTest'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/


I use the Android studio 2.0 vesion to run porgram:

But have the question:


I search for long time, But have the right answer
you can get answer in the link:
https://code.google.com/p/android/issues/detail?id=192835

resolve way:
packagingOptions {
    
    exclude 'META-INF/maven/com.belerweb/pinyin4j/pom.properties'    exclude 'META-INF/maven/com.belerweb/pinyin4j/pom.xml'}

I think, Because the libs infomation. I find this quesiton by myself. Because I see this:

So I know. why take this question. In the Android sutdio 2.0 version. The gradle build the program, it will scan the libs, I know this. But know. it will by the pom.properties info will ckeckout pingyin4j.jar twice in the mevanCenter. So you must in the gradle
config this code: you must know in where!

packagingOptions {
    
    exclude 'META-INF/maven/com.belerweb/pinyin4j/pom.properties'    exclude 'META-INF/maven/com.belerweb/pinyin4j/pom.xml'}


You can use gradle build this question. But when I run the program. I meet the new question:

http://stackoverflow.com/questions/33967703/unable-to-instantiate-application-com-android-tools-fd-runtime-bootstrapapplicat

Now I don't know how to reslove the new question!

But I choise a bad way to reslove the question. 
I use the stable verion android studio 1.4.0

So it is resolve! So I know The question is about the Android studio 2.0 versoion! It is not stabley!









refence link:

1  https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=192835


2  https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=192835

3  http://stackoverflow.com/questions/25015539/gradle-android-optimize-packagingoptions


4  http://stackoverflow.com/questions/33967703/unable-to-instantiate-application-com-android-tools-fd-runtime-bootstrapapplicat




Wednesday, September 30, 2015

Android studio checkout from project have no subverion choise?



今天 打开Android studio 然后, 发现我的Subverion 崩掉了!找了半天也没有找到为什么?

google 竟然没有相关的信息,然后我就无奈了。 我想应该是 前几天,我在编写代码的时候,突然我的Android studio 卡死。再重启的时候,我的电脑就成这样了。

解决方案:
1  我发现 intellj 没有问题, 而且 打开别的项目也是同样的问题,

2 打开别的项目也是同样的问题,这我就蛋疼了!

3  没有办法, 我 只有重新安装Android studio , 也许应该可以的。但是我只是走了一半,并没有完全搞定。

4 然后下面的请慎重: 先备份您的sdk,  之后在处理下面的流程:针对 Mac pro


238
down voteaccepted
Execute these commands from the terminal
rm -Rf /Applications/Android\ Studio.app
rm -Rf ~/Library/Preferences/AndroidStudio*
rm ~/Library/Preferences/com.google.android.studio.plist
rm -Rf ~/Library/Application\ Support/AndroidStudio*
rm -Rf ~/Library/Logs/AndroidStudio*
rm -Rf ~/Library/Caches/AndroidStudio*

this  将会干掉你所有的 Android studio 目录下面的所有信息。所以,要慎重,我就是因为自己的没有考虑,将自己的SDK 给干掉了。这样干掉了Android studio 的缓存设置的信息!


5  简单,重装搞定~


就为的Subverion  svn 又回到了我的怀抱,真心的开心安逸!


Monday, September 7, 2015

Github 利器

接触Github 很长时间了,但是我真正的了解Github  似乎是这两天 刘强和 浮生 毛瑞斌,的提醒下。我才知道原来Github原来是这么的重要。

很多时候,我们在Github 找到自己的人生知己。


我觉的作为一个合格的程序员,必备的素质!

第一:  Google  学会描述你的问题,English

第二:  Github  因为有很多的开源的库,这绝对是招人的时候筛选人得一个重要的指标。看她得绿帽子,哈哈!我真是天才。

第三:  StackOverFlow  这绝对是全球最牛逼的Bug园地。在这里你几乎能找到任何的问题的答案!这里的大神的真的是太多了!就看你有没有发现美丽的眼睛了!

第四:  Bolgger  一个博客的园地, 我们需要分享自己的技术,说的好听一点是这样的!其实,我的博客是写给我自己看的。以后当我遇到问题的时候,我会给自己一个tips.到自己的博客找到答案!

第五:官方文档,是的这是绝对的权威。但是很多的时候,我们在文档中只能找到用法和接口,但是无法找到解决问题的方法!


Sunday, September 6, 2015

Why my mac Android studio ButterKnife doesn't work , Genarate --> have no butterknife chose?

Now I know I am newser to Android!

Today I reslove the problem! Why  my mac Android studio  ButterKnife  doesn't work ,    Genarate -->  have no butterknife chose? I spend a long time!  Because I don' know the question occer where?

But now I know, The deep because is that:  I forget set Android studio Plugins. I din't know before. beacuse the last time is my brother to set Plugins for me. Not I do it myself! 

Folling this way:
Step one:
     Click the Setting Coin or keymap


Step Two
   You just shoud inpur ButterKnife Zelezny . You can see the Browse. just click it.


  Strp 3: 
   The esayest method: just install plugin!

  Let me see:




Thinking the question:

I should know my IDE very much . So now  I am loser to Android . So I have a long way to go!



Saturday, September 5, 2015

Error:failed to find Build Tools revision 23.0.0 rc2 Install Build Tools 23.0.0 rc2 and sync project

How to resolve this problem ?

apply plugin: 'com.android.application'
android {
    compileSdkVersion 21    buildToolsVersion "23.0.0 rc2"
    defaultConfig {
        applicationId "com.love.hades.hades"        minSdkVersion 19        targetSdkVersion 21        versionCode 1        versionName "1.0"    }
    buildTypes {
        release {
            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.jakewharton:butterknife:5.1.2'//inject}

why?

Because  the buildToolversion you set is "23.0.0.r2"  but your Mac SDK din't have the version. I check my version the lastest version is 22. So the gradle to complie will occer the error.

Folling this way:
you just change the buildToolVersion like this(you have install version! OK )

android {
    compileSdkVersion 21    buildToolsVersion "22.0.0"


Tuesday, September 1, 2015

Bug 的思考

今天 修改Bug 真的很头疼 的问题。


是的,真他妈的蛋疼

1  Bug 的问题? you forget to copy image
    主要是因为,写完之后我们需要自己定义一款独特的项目。就是私人定制, copy 图片的时候,只是复制了 xhdpi  image. But you lost the xxhdpi image. so  you will meet bug!

2 You think too thin!
  Sometimes you must think too much.  You must too thinking too much!  We must  think everything question.   or you will meet question.  Yes if you think every question you are very niubi! i love this question.

3 The common use library jar
 The  common library  is usefull to reuse the code!  but if you meet some question, You must to adjust the code to adapter to the unqune company. So you will must change your code. this is not a good ideal!

4 Thinking your code before youe codeing
often we usualy  just coding the code,But we have few time to think how to codeing? how to code effcial! So you must do better, So you must thinking more!