Sacred Cows: Public Fields vs. Public Properties

 

Don’t Expose your implementation details

The advice about exposing state from an object that is reflexive for most of us is: don’t expose your implementation details. So the usual pattern for handling state, that we want to share, is to create a private field, and wrap it in a public property:

public class MyClass

{

private int myState;

public int MyState

{

    get

    {

          return myState;

    }

    set

    {

          myState = value;

    }

}

}

Why do we adopt this approach of encapsulation? Well we might want to change implementation details at some point in the future. Hiding the implementaion protects us against future change, because we are talking to the property instead of the field. We get lower coupling and high-cohesion. Cool.

You ain’t going to need it?

But in .NET it’s fairly easy to change our implementation and transform a field into a property if we want to do something other than return the private field. So if my state is now a calculation then changing a field from

public int MyState;

to

public int MyState

{

    get

    {

          get 3* 4;

    }

isn’t that difficult.

We need to note that changing a field to a property forces a re-compile, so if you have external clients to your assembly you don’t want to force to rebuild it would seem to be a good idea to use a property.

Is this a case of You Ain’t Going to Need It (YAGNI). How often will we make the transformation and is the cost bearable when we do. We can’t define rule but we need to think about the probabilities. A lot of people will never have an issue with the rebuild, some will. Let’s defer this for now.

The exception puts the rule to test

How many of you regulary write code like this though:

public class MyClass

{

public event EventHandler MyEvent;

 By doing so you are exposing the implementation details of your class – how the event is implemented.

It’s not common currency among .NET developers, but you can encapsulate your events:

public class MyClass

{

private EventHandler myEvent;

public event MyEventHandler MyEvent  
{   
          add   
          {       
               m_MyEvent += value;   
          }   
          remove   
          {      
                m_MyEvent -= value;   
          }  
}

Most of us don’t do this. In other words, where we are simply returning the state we do not feel the need with events to wrap a property around them. So why do we feel the need to approach fields this way? Juval Lowy recommends that you do just that in the IDesign guidelines.

This feature tends to only be used when people have a large number of events to manage. So when we are not just returning a field, but performing some sort of management or algorothm, we may want to use the add/remove accessor syntax.

And there lies the obvious condition under which you need to use a property – when the implementation is more complicated than simply returning or setting the value of a field. We include in this when you want to control the ability to set a field i.e. provide a get but no set (and variations like providing differing access modifiers under .NET 2.0).

But most of the time we don’t change our events this way. So is it a fairly good bet for many of us that we can expose our events as public fields. If it was not, we would be wrapping these with accessors all the time. So can we infer that we do not need accessors a lot of the time?

Contracts must have properties

One case where we do need properties is if we define a contract. The property may form part of our contract – clients expect us to supply the indicated state. Clients may expect that state to be readonly or volatile. We do not want to specify how you implement the state, we specify that you have it. So in such a case we want a property. Abstractions are the way to define contracts. An interface cannot have a field. It must have a property, because it has no implementation. It is just a contract.

    public interface IMyInterface
    {
        int MyState
        {
            get;
            set;
        }
    }

Let’s look again at the problem that changing a field to a property forces a re-compile. If we depend upon another module and we dont’ want changes to that module to impact us we probably want to defined a contract to insulate us from that change. In fact the GoF rule is to program to an abstraction. Refinements of this principle the Dependency Inversion Principle (High level modules should not depend on low-level modules, both should depend upon abstractions; abstractions should not depend upon details, details should depend upon abstractions) and the Open/Closed Principle (Modules should be open to extension and closed to modification) mean that we are likely to have made some bets on interfaces already. So we would hope that we will be using interfaces, and thus properties at the points where we are likely to see the pressure to change the implementation, and thus be insulated from the likelihood of ever needing to change a field to a property. We have already bought into properties at that point.

So where we are not dealing with an interface we might want to make the bet that we don’t need a property. Or at least look at our options. Of course we will always lose some bets. Sadly computing has always been a win some/lose some propostion. So you need to judge if the benefits of going with the field outwiegh the risk of breaking change.

It’s about change

Ultimately its about change. Encapstulation and information hiding are about insulating yourself against change. The question you need to ask is, is it likely? If so insulate yourself from it. That will probably mean more than just property syntax, and you might need to look at accessors on events too.  If it isn’t, worry about the cost of using a property when you don’t need it. Don’t reflexively wrap a private member with a public property, consider your actions in context.

TDD and the property test

So is there a cost to having a property. Well apart from extra lines of code, and extra lines of code always increase TCO (total cost of ownership).

For those doing TDD  one benefit will be removing the pressure to test those property accessors. If you do the question may be, how valuable are your tests, if they are just testing get { return myState;}. But if you don’t your code coverage will drop below 100%. Folks vacillate over ‘should I be testing my properties’. If you don’t know why you need to in that context, the answer might be that you didn’t need a property at all.

If you are testing an implementation of an interface you want to test ‘everything that could break’ now and in the future, including a change to the implementation of that contract. So at that point the ‘property as part of contract’ rule cuts in for us. But if it is not likely to change, you probably don’t have an interface and using fields where there is no complexity or algorithm in the property begins to look like a smell of  ‘specualtive generalization’.

Reflection

Reflection can be a fly in your ointment because it recognizes the difference between a property and a field. But again the context is everything here. You might be able to ask for either and not care. If you do care then its best to document that for the implementor of the target.

Don’t forget internal!

We talk about public fields here, don’t forget if they are not consumed outside the assembly make them internal. Then the choice is a lot easier as if you change you need to rebuild that assembly anyway, but external clients didn’t care. So favour an internal field when the context makes sense. Friend assemblies in .NET 2.0 make it easy to test internals without the need to promote to public, just to get them tested, so your public/internal decision can be driven by your consumers outside the assembly that are not just tests.

Burn him, he’s a witch

The issues around fields vs. properties don’t seem well understood so be prepared for dismay from your co-workers if you start using public fields. A lot of coding standards (FxCop and IDesign) try to stamp on this one. Bear in mind the context of those standards (FxCop is driven by framework design guidelines, IDesign is influenced by component design) which may not be your context. It may require a little more thought than some are giving it. For now be prepared to argue the case on this one. You might want to consider your answer in a written test.

After writing this blog, prompted by some mentoring I was doing at work, I looked around to see if anyone else was talking about this. There does not seem to be a lot of noise but Eric Gunnerson and Jeff Atwood seem to have had similar thoughts on this issue.

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

100 Responses to Sacred Cows: Public Fields vs. Public Properties

  1. Unknown says:

    sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade

  2. Unknown says:

     sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade

  3. Unknown says:

     maple story mesos maple story mesos maple story mesos maple story mesos maple story mesos maple story mesos maplestory mesos maplestory mesos maplestory mesos maplestory mesos maplestory mesos maplestory mesos maple story gold maple story gold maple story gold maple story gold maple story gold maple story gold maplestory gold maplestory gold maplestory gold maplestory gold maplestory gold maplestory gold maple story money maple story money maple story money maple story money maple story money maple story money maplestory money maplestory money maplestory money maplestory money maplestory money maplestory money buy maple story mesos buy maple story mesos buy maple story mesos buy maple story mesos buy maple story mesos buy maple story mesos buy maplestory mesos buy maplestory mesos buy maplestory mesos buy maplestory mesos buy maplestory mesos buy maplestory mesos maple story maple story maple story maple story maple story maple story maplestory maplestory maplestory maplestory maplestory maplestory sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell ms mesos sell ms mesos sell ms mesos sell ms mesos sell ms mesos sell ms mesos maple story shop maple story shop maple story shop maple story shop maple story shop maple story shop cheap msmesos cheap msmesos cheap msmesos cheap msmesos cheap msmesos cheap msmesos

  4. Unknown says:

    lotro lotro lotro lotro lotro lotro lotro gold lotro gold lotro gold lotro gold lotro gold lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold lotr lotr lotr lotr lotr lotr lotr gold lotr gold lotr gold lotr gold lotr gold lotr gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold sell Final Fantasy XI gils sell Final Fantasy XI gils sell Final Fantasy XI gils sell Final Fantasy XI gils sell Final Fantasy XI gils sell Final Fantasy XI gils sell Final Fantasy XI gils sell FFXI Gil sell FFXI Gil sell FFXI Gil sell FFXI Gil sell FFXI Gil sell FFXI Gil sell FFXI Gil Final Fantasy XI gil trade Final Fantasy XI gil trade Final Fantasy XI gil trade Final Fantasy XI gil trade Final Fantasy XI gil trade Final Fantasy XI gil trade Final Fantasy XI gil trade sell lotro gold sell lotro gold sell lotro gold sell lotro gold sell lotro gold sell lotro gold sell lotro gold sell lotro gold lotro gold trade lotro gold trade lotro gold trade lotro gold trade lotro gold trade lotro gold trade lotro gold trade lotro gold trade sell lotro gold us sell lotro gold us sell lotro gold us sell lotro gold us sell lotro gold us sell lotro gold us sell lotro gold us sell lotro gold us the lord of the rings online us the lord of the rings online us the lord of the rings online us the lord of the rings online us the lord of the rings online us the lord of the rings online us the lord of the rings online us the lord of the rings online us

  5. Unknown says:

    sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade

  6. Unknown says:

    sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade

  7. Unknown says:

    welcome to visit RF online blog Mmo blog Mmo guide blog Internet game guideTales of pirates forum ,it will give your some help.EVE online isk cheap EVE isk Guild wars gold Guild wars money GW gold Rs Money Wow gold Wow World of warcraft Gold Wow eu gold Wow us gold Maplestory mesos WOW GOLD worlf of warcrraft  World of warcraft gold Runescape RS gold RF online RF online cp RF online dalant  RF online disena  RF online money RF online gold Lotro gold Buy lotro gold  WOW gold  Cheap wow gold on sale. and you can sell your gold to us.

  8. Unknown says:

    Play Roulette for free as often as you like, get a feel for the game and how to place you bets.
    Free Roulette is a great game with many ways to bet so learn strategy and have fun.

    Roulette is a casino and gambling game named after the French word meaning "small wheel".

    The roulette wheel is
    believed to be a fusion of the English wheel games … The American
    style roulette table with a wheel at one end is now used in most
    casinos.

    Is a Free Roulette Systems 100% Effective Or Should I Pay For One?

    They are a dime a dozen, but there are only a few
    roulette strategies that really work.

  9. Unknown says:

    sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade

  10. Unknown says:

    sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade

  11. Unknown says:

    lotro gold lotro gold lotro gold lotro gold lotro gold lotro gold lotro lotro lotro lotro lotro lotro buy lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold lotr lotr lotr lotr lotr lotr lotr gold lotr gold lotr gold lotr gold lotr gold lotr gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold

  12. Unknown says:

    sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maple story mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maplestory mesos sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story gold sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maple story money sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory gold sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money sell maplestory money maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maplestory trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade maple story trade

  13. Unknown says:

    sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold sell wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key sell wow cd key trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow gold trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade wow trade

  14. Unknown says:

    lotro gold lotro gold lotro gold lotro gold lotro gold lotro gold lotro lotro lotro lotro lotro lotro buy lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold buy lotro gold lotr lotr lotr lotr lotr lotr lotr gold lotr gold lotr gold lotr gold lotr gold lotr gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold lord of the rings online gold

  15. Unknown says:

    wow gold world of warcraft gold buy wow gold cheap wow gold wow power leveling wow powerleveling wow leveling wow gold world of warcraft gold buy wow gold cheap wow gold wow power leveling wow powerleveling wow gold buy wow gold cheap wow gold wow power leveling wow powerleveling runescape gold runescape money EverQuest 2 gold eq2 plat EverQuest 2 gold eq2 plat Maple Story Mesos maplestory Mesos Maple Story meso maplestory meso Final Fantasy XI gil ffxi gil LOTRO Gold LOTR Gold lord of the ring gold Granado Espada Vis Granado Espada gold GE money dofus kamas kamas dofus runescape gold runescape money flyff penya buy flyff gold flyff money EverQuest plat buy eq gold EverQuest gold eq plat eq gold aoc gold Age of Conan gold age of conan power leveling final fantasy xi gil ffxi gil dofus kamas kamas dofus eve online isk eve isk LOTRO Gold LOTR Gold lord of the ring gold silkroad gold buy silkroad gold Age of Conan gold age of conan power leveling aoc gold aoc gold aoc gold aoc gold aoc gold aoc gold maple story mesos maplestory mesos maple story meso wow gold ffxi gil wow leveling wow power leveling wow powerleveling wow gold wow power leveling wow powerleveling hero online gold imvu credits kal geon knight gold last chaos gold lineage adena lineage 2 adena lord of the rings gold lotro gold lotr gold maple story mesos maplestory mesos maplestory meso perfect world gold pirates of the burning Sea gold

  16. Unknown says:

    SWG Credits Star Wars Galaxies Credits the SUN online the SUN online gold sword of the new world vis sword of the new world gold Tabula Rasa Credit Tabula Rasa Credits Tales of Pirates Gold vanguard money Buy Vanguard Gold voyage century gold Warhammer gold Last Chaos Gold GW gold Guild Wars Gold lineage 2 adena buy lineage 2 adena lineage ii adena cheap lineage 2 adena tales of pirates gold Ragnarok Zeny ro zeny Rappelz Rupees Rappelz gold Hellgate London Palladium Second Life Linden second life money vanguard money buy vanguard gold Tabula Rasa Credit tabula rasa credits everquest2 platinum mmporpg free mmorpg mmorpg forum free online mmorpg wow 1000 gold aoc gold aoc power leveling aoc leveling aoc gold aoc power leveling aoc leveling aoc gold aoc power leveling aoc leveling

  17. Unknown says:

    wow gold world of warcraft gold buy wow gold cheap wow gold wow power leveling wow powerleveling 2 moons dil 2moons gold aoc power leveling aoc leveling Aion gold buy Aion gold Anarchy Online credits Anarchy Online credit ArchLord gold buy ArchLord gold coh influence City of Heroes influence City of Villains infamy cov infamy eve online isk eve isk Gaia Online Gold gaia gold Gods and Heroes gold Guild Wars Gold GW gold Hellgate London Palladium Hero online gold Last Chaos Gold Lineage adena Lineage 1 adena Lineage 2 adena buy Lineage 2 adena lineage ii adena cheap lineage 2 adena potbs doubloon pirates of the burning sea gold Ragnarok Zeny ro zeny Rappelz Rupees Rappelz gold rf online gold Scions of Fate Gold Second Life Linden second life money Silkroad gold Buy Silkroad gold

  18. Unknown says:

    ECサイト構築   ウィークリーマンション
    治験 結婚指輪
    太陽光発電 結婚式 演出 吉原 ソープ
    債務整理
     害虫駆除 法律事務所 求人 看護師
     キャッシング
    転職 バイアグラ ショッピング枠 現金化  釣り 釣具
    別れさせ屋 価格   賃貸 
    不動産担保ローン  介護 看護師   会社設立   横浜中華街 ウェディングドレス  ウェディング
    カラコン 
    メル友 ウィークリーマンション
    自動車ガラス  不動産 ダイビング
     葬儀 東京ショッピング枠 現金化  データ復旧  テレマーケティング  RAID復旧 データ復元 データ復旧

  19. Unknown says:

    toefl

  20. Unknown says:

    男性下着   吉原 ソープ  威龍 デリヘル 勃起 不全  デリバリーヘルス   
     精力剤 インポ  すすきの デリヘル 人妻 風俗 精力剤  勃起薬 熟女

  21. Unknown says:

    ECサイト構築介護  葬儀 東京  治験  横浜中華街  会社設立 データ復旧 結婚式 演出
     

  22. Unknown says:

      吉原 ソープ
    デリヘル
    精力剤  勃起薬 熟女横浜デリヘル  品川デリヘル    すすきの 風俗  

  23. Unknown says:

    ウェディング RMT データ復旧 メタボ対策 データ復旧 データ復元 RAID復旧 テレマーケティング  株式投資 ショッピング枠 現金化 釣り 釣具  横浜 賃貸  結婚指輪  結婚式 演出

    データ復旧  介護   看護師   バイアグラ  害虫駆除   横浜中華街  太陽光発電  データ復旧  不動産担保ローン   会社設立  ダイビング  治験 ウィークリーマンション   横浜中華街  転職 ウェディングドレス  ウェディングドレス  子宮筋腫  フローリング オーク 投資
    お取り寄せグルメ

  24. Unknown says:

    エスピーエフ 花粉症  新宿賃貸    マンスリーマンション     営業代行 印鑑 営業支援  雛人形  フレッツ光  人材派遣  マンション 投資    マンション投資   オートローン   ゴルフ会員権   バイク便派遣   投資マンション鼻づまり  Bフレッツ  FX  いびき  販売促進

  25. Unknown says:

    不動産投資 プレジデント インテリアコーディネータ リフォーム 東京 リフォーム 大阪 不動産 査定 不動産 買取 不動産 売買 不動産 鑑定 不動産 売却  広島 不動産 札幌 不動産 仙台 不動産 大阪 不動産 横浜 不動産 名古屋 不動産 福岡 不動産 京都 不動産 埼玉 不動産 千葉 不動産 静岡 不動産 神戸 不動産 浜松 不動産 堺市 不動産 川崎市 不動産 相模原市 不動産 姫路 不動産 岡山 不動産 明石 不動産 鹿児島 不動産 北九州市 不動産 熊本 不動産 収益物件 システム開発 webシステム開発  土壌汚染 SEO対策 東京 ホームページ制作 東京

  26. Unknown says:

    ffxi gil wow gold maple story mesos maplestory mesos maple story meso wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold aoc gold aoc gold wow leveling Runescape Money Runescape Gold Runescape Money Runescape Gold Runescape Power leveling Runescape Money Runescape Gold Runescape gold runescape money Runescape Money Runescape gold Runescape Money Runescape gold Runescape Power leveling Runescape Items runescape money runescape gold money runescape Runescape Money Runescape gold Runescape Gold runescape money age of conan gold aoc gold aoc power leveling age of conan power leveling aoc leveling archlord gold buy archlord gold anarchy online credits anarchy online credit city of heroes influence coh influence city of villains infamy cov infamy dofus kamas kamas dofus eve isk eve online isk everquest 2 gold eq2 plat ffxi gil final fantasy xi gil gaia online gold gaia gold guild wars gold gw gold hellgate london palladium cabal alz daoc gold daoc plat buy eve isk eve online isk eve isk EverQuest 2 plat buy eq2 gold EverQuest 2 gold eq2 plat Lord of the Rings Online gold LOTR gold LOTRO gold silkroad online gold SRO gold Silkroad gold buy silkroad gold world of warcraft gold wow gold kaufen buy wow gold wow geld cheap wow gold wow power leveling wow powerleveling

  27. Unknown says:

    Hi,Do you need advertising displays, screen advertisings, digital sign, digital signages and LCDs? Please go Here:www.amberdigital.com.hk(Amberdigital).we have explored and developed the international market with professionalism. We have built a widespread marketing network, and set up a capable management team dedicated to provide beyond-expectation services to our customers.
    amberdigital Contact Us
    website:www.amberdigital.com.hk
    alibaba:amberdigital.en.alibaba.com[dgjdhchiijebeba]

  28. Unknown says:

    wow gold wow gold eve isk wow power leveling wow power leveling wow power leveling wow power leveling warhammer gold warhammer power leveling bestchina traveland ugg bootsor ghd straighteners

  29. hfgh says:

    http://www.batteries-shop.nethttp://www.batterieslaptop.nethttp://www.uk-laptopbattery.comhttp://www.wt-batteries.comhttp://www.replicawatchesstore.nethttp://www.cheapteastore.comhttp://www.laptopbatterystore.co.ukhttp://www.batterieslaptop.nethttp://www.batteries-supply.comhttp://www.powertoolsbatteries.co.ukhttp://www.batterygrip.orghttp://www.uk-batteries.co.ukhttp://www.ukbatterystore.co.ukhttp://www.topbatteries.co.ukhttp://www.batteries-shop.net/acer-laptop-battery-c-2.htmlhttp://www.batteries-shop.net/apple-laptop-battery-c-3.htmlhttp://www.batteries-shop.net/asus-laptop-battery-c-4.htmlhttp://www.batteries-shop.net/compaq-laptop-battery-c-5.htmlhttp://www.batteries-shop.net/dell-laptop-battery-c-6.htmlhttp://www.batteries-shop.net/fujitsu-laptop-battery-c-7.htmlhttp://www.batteries-shop.net/gateway-laptop-battery-c-8.htmlhttp://www.batteries-shop.net/hp-laptop-battery-c-9.htmlhttp://www.batteries-shop.net/hp-compaq-laptop-battery-c-10.htmlhttp://www.batteries-shop.net/ibm-laptop-battery-c-11.htmlhttp://www.batteries-shop.net/lenovo-laptop-battery-c-12.htmlhttp://www.batteries-shop.net/lg-laptop-battery-c-13.htmlhttp://www.batteries-shop.net/panasonic-laptop-battery-c-14.htmlhttp://www.batteries-shop.net/samsung-laptop-battery-c-15.htmlhttp://www.batteries-shop.net/sony-laptop-battery-c-16.htmlhttp://www.batteries-shop.net/toshiba-laptop-battery-c-17.htmlhttp://www.uk-laptopbattery.com/acer-laptop-battery-c-2.htmlhttp://www.uk-laptopbattery.com/apple-laptop-battery-c-3.htmlhttp://www.uk-laptopbattery.com/asus-laptop-battery-c-4.htmlhttp://www.uk-laptopbattery.com/compaq-laptop-battery-c-5.htmlhttp://www.uk-laptopbattery.com/dell-laptop-battery-c-6.htmlhttp://www.uk-laptopbattery.com/fujitsu-laptop-battery-c-7.htmlhttp://www.uk-laptopbattery.com/gateway-laptop-battery-c-8.htmlhttp://www.uk-laptopbattery.com/hp-laptop-battery-c-9.htmlhttp://www.uk-laptopbattery.com/hp-compaq-laptop-battery-c-10.htmlhttp://www.uk-laptopbattery.com/ibm-laptop-battery-c-11.htmlhttp://www.uk-laptopbattery.com/lenovo-laptop-battery-c-12.htmlhttp://www.uk-laptopbattery.com/lg-laptop-battery-c-13.htmlhttp://www.uk-laptopbattery.com/panasonic-laptop-battery-c-14.htmlhttp://www.uk-laptopbattery.com/samsung-laptop-battery-c-15.htmlhttp://www.uk-laptopbattery.com/sony-laptop-battery-c-16.htmlhttp://www.uk-laptopbattery.com/toshiba-laptop-battery-c-17.htmlhttp://www.topbatteries.co.uk/acer-laptop-battery-c-1.htmlhttp://www.topbatteries.co.uk/hp-laptop-batteries-c-2.htmlhttp://www.topbatteries.co.uk/sony-laptop-battery-c-3.htmlhttp://www.topbatteries.co.uk/dell-laptop-battery-c-4.htmlhttp://www.topbatteries.co.uk/ibm-laptop-battery-c-5.htmlhttp://www.topbatteries.co.uk/compaq-laptop-battery-c-6.htmlhttp://www.topbatteries.co.uk/toshiba-laptop-battery-c-7.htmlhttp://www.topbatteries.co.uk/fujitsu-laptop-battery-c-8.htmlhttp://www.topbatteries.co.uk/apple-laptop-battery-c-9.htmlhttp://www.topbatteries.co.uk/samsung-laptop-battery-c-10.htmlhttp://www.cheapteastore.com/chinese-black-tea-c-3.htmlhttp://www.cheapteastore.com/chinese-herbal-tea-c-7.htmlhttp://www.cheapteastore.com/chinese-oolong-tea-c-2.htmlhttp://www.cheapteastore.com/chinese-puerh-tea-c-4.htmlhttp://www.cheapteastore.com/chinese-white-tea-c-5.htmlhttp://www.cheapteastore.com/chinese-yellow-tea-c-6.htmlhttp://www.cheapteastore.com/tie-guan-yin-c-8.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s